X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fmarcdump.c;h=041a7dff9d098da05885659afa8a4e526c7121a9;hp=533714d25e69d5230e9a6f8674a482ea2f7e050e;hb=43a9d38d20c1b1bcd1a03b2445a501d27526bd35;hpb=f03f934986cd3ff1fbb98f8b1432d70c46f6809e diff --git a/util/marcdump.c b/util/marcdump.c index 533714d..041a7df 100644 --- a/util/marcdump.c +++ b/util/marcdump.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) 1995-2011 Index Data * See the file LICENSE for details. */ @@ -133,7 +133,7 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname) { const char *name = (const char *) xmlTextReaderLocalName(reader); - if (!strcmp(name, "record")) + if (!strcmp(name, "record") || !strcmp(name, "r")) { xmlNodePtr ptr = xmlTextReaderExpand(reader); @@ -143,8 +143,8 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname) else { int write_rc = yaz_marc_write_mode(mt, wrbuf); - if (write_rc) - yaz_log(YLOG_WARN, "yaz_marc_write_mode: write error: %d", write_rc); + if (write_rc) + yaz_log(YLOG_WARN, "yaz_marc_write_mode: write error: %d", write_rc); fputs(wrbuf_cstr(wrbuf), stdout); wrbuf_rewind(wrbuf); @@ -167,7 +167,8 @@ static void marcdump_read_xml(yaz_marc_t mt, const char *fname) ptr = ptr->children; continue; } - if (!strcmp((const char *) ptr->name, "record")) + if (!strcmp((const char *) ptr->name, "record") || + !strcmp((const char *) ptr->name, "r")) { int r = yaz_marc_read_xml(mt, ptr); if (r) @@ -218,13 +219,11 @@ static void dump(const char *fname, const char *from, const char *to, yaz_marc_iconv(mt, cd); } yaz_marc_enable_collection(mt); - yaz_marc_set_read_format(mt, input_format); - yaz_marc_set_write_format(mt, output_format); + yaz_marc_xml(mt, output_format); yaz_marc_write_using_libxml2(mt, write_using_libxml2); - yaz_marc_write_turbo_format(mt, output_format == YAZ_MARC_TMARCXML); yaz_marc_debug(mt, verbose); - if (input_format == YAZ_MARC_MARCXML || input_format == YAZ_MARC_TMARCXML || input_format == YAZ_MARC_XCHANGE) + if (input_format == YAZ_MARC_MARCXML || input_format == YAZ_MARC_TURBOMARC || input_format == YAZ_MARC_XCHANGE) { #if YAZ_HAVE_XML2 marcdump_read_xml(mt, fname); @@ -444,8 +443,14 @@ int main (int argc, char **argv) rather than WRBUF */ if (strlen(arg) > 4 && strncmp(arg, "xml,", 4) == 0) { + /* Only supported for Libxml2 2.6.0 or later */ +#if LIBXML_VERSION >= 20600 arg = arg + 4; write_using_libxml2 = 1; +#else + fprintf(stderr, "%s: output using Libxml2 unsupported\n", prog); + exit(4); +#endif } output_format = yaz_marc_decode_formatstr(arg); if (output_format == -1)