X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;ds=sidebyside;f=t%2Fsrc%2Fstandalone.c;h=4b21ddcd7e14bf186f22ca64f030190b2f357118;hb=8b767bf5e44f07a29ed3ef77af27bf29f2db729a;hp=22eb56f33998cb2b4740b51b2d9365f61043f5e7;hpb=26f6997a399d4e68ea4a9cea87c8c277fb06b709;p=gedcom-parse.git diff --git a/t/src/standalone.c b/t/src/standalone.c index 22eb56f..4b21ddc 100644 --- a/t/src/standalone.c +++ b/t/src/standalone.c @@ -32,6 +32,7 @@ #include "utf8-locale.h" #define BOGUS_FILE_NAME "Makefile.am" +int total_conv_fails = 0; void show_help () { @@ -49,6 +50,7 @@ void show_help () printf(" -3 Run the test parse 3 times instead of once\n"); printf(" -b Parse a bogus file before parsing the main file\n"); printf(" -q No output to standard output\n"); + printf(" -o File to generate output to (def. testgedcom.out)\n"); } Gedcom_ctxt header_start(Gedcom_rec rec, int level, Gedcom_val xref, char *tag, @@ -185,6 +187,7 @@ void default_cb(Gedcom_elt elt, Gedcom_ctxt ctxt, int level, char *tag, converted = convert_utf8_to_locale(raw_value, &conv_fails); output(0, "== %d %s (%d) %s (ctxt is %d, conversion failures: %d)\n", level, tag, tag_value, converted, (int)ctxt, conv_fails); + total_conv_fails += conv_fails; } void subscribe_callbacks() @@ -225,6 +228,7 @@ int main(int argc, char* argv[]) int run_times = 1; int bogus = 0; int result = 0; + char* outfilename = NULL; char* file_name = NULL; if (argc > 1) { @@ -258,6 +262,17 @@ int main(int argc, char* argv[]) else if (!strncmp(argv[i], "-q", 3)) { output_set_quiet(1); } + else if (!strncmp(argv[i], "-o", 3)) { + i++; + if (i < argc) { + outfilename = argv[i]; + } + else { + printf ("Missing output file name\n"); + show_help(); + exit(1); + } + } else if (strncmp(argv[i], "-", 1)) { file_name = argv[i]; break; @@ -285,7 +300,7 @@ int main(int argc, char* argv[]) gedcom_set_default_callback(default_cb); subscribe_callbacks(); - output_open(); + output_open(outfilename); if (bogus) { output(0, "\n=== Parsing bogus file %s\n", BOGUS_FILE_NAME); gedcom_parse_file(BOGUS_FILE_NAME); @@ -293,6 +308,7 @@ int main(int argc, char* argv[]) while (run_times-- > 0) { output(0, "\n=== Parsing file %s\n", file_name); result |= gedcom_parse_file(file_name); + output(0, "\n=== Total conversion failures: %d\n", total_conv_fails); } if (result == 0) { output(1, "Parse succeeded\n");