/* $Name$ */
#include "gedcom.h"
+#include "output.h"
+#include "portability.h"
#include <locale.h>
#include <stdio.h>
-#define OUTFILE "testgedcom.out"
-FILE* outfile = NULL;
-int quiet = 0;
-
-void output(int to_stdout_too, char* format, ...)
-{
- va_list ap;
- va_start(ap, format);
- if (outfile) {
- vfprintf(outfile, format, ap);
- }
- if (to_stdout_too && !quiet) {
- vprintf(format, ap);
- }
- va_end(ap);
-}
-
void gedcom_message_handler(Gedcom_msg_type type, char *msg)
{
if (type == MESSAGE)
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)
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;
}
int main(int argc, char* argv[])
{
int result;
+ char* outfilename = NULL;
if (argc > 1) {
int i;
exit(1);
}
else if (!strncmp(argv[i], "-q", 3)) {
- quiet = 1;
+ 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]);
gedcom_init();
setlocale(LC_ALL, "");
gedcom_set_message_handler(gedcom_message_handler);
-
- outfile = fopen(OUTFILE, "a");
- if (!outfile) {
- printf("Could not open %s for appending\n", OUTFILE);
- }
+
+ 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");
}
else {
output(1, "Test failed: %d\n", result);
}
-
- fclose(outfile);
+
+ output_close();
return result;
}