From bf9e55fae6324f24e55a6c155282e8f038f88c40 Mon Sep 17 00:00:00 2001 From: Peter Verthez Date: Fri, 24 Jan 2003 06:48:32 +0000 Subject: [PATCH] Added program to convert a GEDCOM file to standard GEDCOM. --- bin/Makefile.am | 10 ++- bin/gedcom-sanitize.c | 137 +++++++++++++++++++++++++++++++++++++++++ bin/gedcom-sanitize.sh | 21 +++++++ 3 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 bin/gedcom-sanitize.c create mode 100755 bin/gedcom-sanitize.sh diff --git a/bin/Makefile.am b/bin/Makefile.am index 80b3059..2f64556 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -6,9 +6,15 @@ localedir = $(datadir)/locale INCLUDES = -I$(srcdir)/../intl -I$(srcdir)/../include -I$(srcdir)/../utf8 CFLAGS = -O2 -W -Wall -pedantic -Wno-long-long @EXTRA_CFLAGS@ -EXTRA_DIST = gedcom-check.sh +EXTRA_DIST = gedcom-check.sh gedcom-sanitize.sh -bin_PROGRAMS = gedcom-check +bin_PROGRAMS = gedcom-check gedcom-sanitize gedcom_check_SOURCES = gedcom-check.c gedcom_check_LDFLAGS = -L../gedcom/.libs -L../utf8/.libs @ICONV_LIBPATH@ gedcom_check_LDADD = $(LIBICONV) -lgedcom -lutf8tools $(LIBICONV) + +gedcom_sanitize_SOURCES = gedcom-sanitize.c +gedcom_sanitize_LDFLAGS = -L../gedcom/.libs -L../gom/.libs -L../utf8/.libs \ + @ICONV_LIBPATH@ +gedcom_sanitize_LDADD = $(LIBICONV) -lgedcom_gom -lgedcom -lutf8tools \ + $(LIBICONV) diff --git a/bin/gedcom-sanitize.c b/bin/gedcom-sanitize.c new file mode 100644 index 0000000..167019d --- /dev/null +++ b/bin/gedcom-sanitize.c @@ -0,0 +1,137 @@ +/* Check program using the Gedcom library. + Copyright (C) 2001, 2002 The Genes Development Team + This file is part of the Gedcom parser library. + Contributed by Peter Verthez , 2001. + + The Gedcom parser library is free software; you can redistribute it + and/or modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The Gedcom parser library is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the Gedcom parser library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +/* $Id$ */ +/* $Name$ */ + +#include "gedcom.h" +#include "gom.h" +#include "utf8tools.h" +#include +#include +#include +#ifdef HAVE_CONFIG_H +#include +#endif +#include + +#define _(string) dgettext(PACKAGE, string) +#define N_(string) (string) + +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif + +void show_help () +{ + printf("Converts a GEDCOM file to strict standard GEDCOM\n\n"); + printf("Usage: gedcom-sanitize [options] file\n"); + printf("Options:\n"); + printf(" -h Show this help text\n"); + printf(" -dg Debug setting: only libgedcom debug messages\n"); + printf(" -da Debug setting: libgedcom + yacc debug messages\n"); + printf(" -e Extension to give to file name (default 'new')\n"); + printf("Errors, warnings, ... are sent to stdout\n"); +} + +void gedcom_message_handler(Gedcom_msg_type type UNUSED, char *msg) +{ + char *converted = NULL; + int conv_fails = 0; + converted = convert_utf8_to_locale(msg, &conv_fails); + printf("%s\n", converted); +} + +int main(int argc, char* argv[]) +{ + Gedcom_err_mech mech = DEFER_FAIL; + int compat_enabled = 1; + int debug_level = 0; + char* file_name = NULL; + int result; + char* extension = "new"; + + if (argc > 1) { + int i; + for (i=1; i