Small correction in help string.
[gedcom-parse.git] / t / src / update.c
index cc983768e6fef906efe39661fac83cd8d42b1642..22e852c76278ed5d323deda0278062a3e01cbd1d 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "gedcom.h"
 #include "output.h"
+#include "portability.h"
 #include <locale.h>
 #include <stdio.h>
 
@@ -40,16 +41,18 @@ void gedcom_message_handler(Gedcom_msg_type type, char *msg)
 void show_help ()
 {
   printf("gedcom-parse test program for libgedcom\n\n");
-  printf("Usage:  updatetest [options] file\n");
+  printf("Usage:  updatetest [options]\n");
   printf("Options:\n");
   printf("  -h    Show this help text\n");
   printf("  -q    No output to standard output\n");
+  printf("  -o <outfile>  File to generate output to (def. testgedcom.out)\n");
 }
 
 int test_xref_functions()
 {
   struct xref_value* xr;
   int result;
+  long int tmp;
 
   xr = gedcom_get_by_xref("@NOTHING_THERE@");
   if (xr != NULL)
@@ -80,7 +83,8 @@ int test_xref_functions()
     return 16;
   }
 
-  if ((int)xr->object != 1) {
+  tmp = void_ptr_to_int(xr->object);
+  if (tmp != 1) {
     output(1, "Not the correct cross-reference object\n");
     return 17;
   }
@@ -135,6 +139,7 @@ int test_xref_functions()
 int main(int argc, char* argv[])
 {
   int result;
+  char* outfilename = NULL;
   
   if (argc > 1) {
     int i;
@@ -146,6 +151,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 {
        printf ("Unrecognized option: %s\n", argv[i]);
        show_help();
@@ -158,10 +174,11 @@ int main(int argc, char* argv[])
   setlocale(LC_ALL, "");
   gedcom_set_message_handler(gedcom_message_handler);
 
-  output_open();
+  output_open(outfilename);
   
   result = gedcom_new_model();
-  result |= test_xref_functions();
+  if (result == 0)
+    result |= test_xref_functions();
   if (result == 0) {
     output(1, "Test succeeded\n");
   }