X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fmarcdump.c;h=b32969648ae538979da6fcc0090ada1e3b1248da;hp=254c2d48b3a7d72b7521678d4ff8bf1593d64294;hb=259d7eb2a0c31853affc5147d1d57223345a1625;hpb=cd2f012a70ebadf660acb71936e32192287dc30a diff --git a/util/marcdump.c b/util/marcdump.c index 254c2d4..b329696 100644 --- a/util/marcdump.c +++ b/util/marcdump.c @@ -1,8 +1,8 @@ /* - * Copyright (C) 1995-2006, Index Data ApS + * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: marcdump.c,v 1.45 2006-12-15 19:28:48 adam Exp $ + * $Id: marcdump.c,v 1.48 2007-02-17 10:53:06 adam Exp $ */ #define _FILE_OFFSET_BITS 64 @@ -126,6 +126,7 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname) static void dump(const char *fname, const char *from, const char *to, int input_format, int output_format, + int write_using_libxml2, int print_offset, const char *split_fname, int split_chunk, int verbose, FILE *cfile, const char *leader_spec) { @@ -151,6 +152,7 @@ static void dump(const char *fname, const char *from, const char *to, yaz_marc_iconv(mt, cd); } yaz_marc_xml(mt, output_format); + yaz_marc_write_using_libxml2(mt, write_using_libxml2); yaz_marc_debug(mt, verbose); if (input_format == YAZ_MARC_MARCXML || input_format == YAZ_MARC_XCHANGE) @@ -315,6 +317,7 @@ int main (int argc, char **argv) int split_chunk = 1; const char *split_fname = 0; const char *leader_spec = 0; + int write_using_libxml2 = 0; #if HAVE_LOCALE_H setlocale(LC_CTYPE, ""); @@ -338,8 +341,24 @@ int main (int argc, char **argv) fprintf(stderr, "%s: bad input format: %s\n", prog, arg); exit(1); } +#if YAZ_HAVE_XML2 +#else + if (input_format == YAZ_MARC_MARCXML + || input_format == YAZ_MARC_XCHANGE) + { + fprintf(stderr, "%s: Libxml2 support not enabled\n", prog); + exit(3); + } +#endif break; case 'o': + /* dirty hack so we can make Libxml2 do the writing .. + rather than WRBUF */ + if (strlen(arg) > 4 && strncmp(arg, "xml,", 4) == 0) + { + arg = arg + 4; + write_using_libxml2 = 1; + } output_format = yaz_marc_decode_formatstr(arg); if (output_format == -1) { @@ -400,6 +419,7 @@ int main (int argc, char **argv) break; case 0: dump(arg, from, to, input_format, output_format, + write_using_libxml2, print_offset, split_fname, split_chunk, verbose, cfile, leader_spec); break;