X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fmarcdump.c;h=adfc0151f0f2388d5bf845c63c1c08f1c05d5092;hp=cec66ab347d4320f050eaa2499c31524bfb3ad69;hb=30af0a1ebbea75c3e757eb03d3f988c61fce8511;hpb=725b07a551ac42b73d3b621e6a9b696cd13f42d0 diff --git a/util/marcdump.c b/util/marcdump.c index cec66ab..adfc015 100644 --- a/util/marcdump.c +++ b/util/marcdump.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2013 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ @@ -46,6 +46,7 @@ #include #include #include +#include #ifndef SEEK_SET #define SEEK_SET 0 @@ -319,6 +320,7 @@ static void dump(const char *fname, const char *from, const char *to, size_t len_result; size_t r; char buf[100001]; + yaz_iconv_t cd1 = 0; r = fread(buf, 1, 5, inf); if (r < 5) @@ -428,7 +430,21 @@ static void dump(const char *fname, const char *from, const char *to, } } len_result = rlen; + + if (yaz_marc_check_marc21_coding(from, buf, 26)) + { + cd1 = yaz_iconv_open(to, "utf-8"); + if (cd1) + yaz_marc_iconv(mt, cd1); + } r = yaz_marc_decode_buf(mt, buf, -1, &result, &len_result); + + if (cd1) + { + yaz_iconv_close(cd1); + yaz_marc_iconv(mt, cd); + } + if (r == -1) no_errors++; if (r > 0 && result && len_result) @@ -507,6 +523,7 @@ int main (int argc, char **argv) #endif prog = *argv; + yaz_enable_panic_backtrace(prog); while ((r = options("i:o:C:npc:xOeXIf:t:s:l:Vv", argv, argc, &arg)) != -2) { no++;