X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=util%2Fmarcdump.c;h=adfc0151f0f2388d5bf845c63c1c08f1c05d5092;hp=850331b48e8a4b7ca3670229f75903ef716e882e;hb=30af0a1ebbea75c3e757eb03d3f988c61fce8511;hpb=473824797f568578dc17d7242551cb2f7ccef46c diff --git a/util/marcdump.c b/util/marcdump.c index 850331b..adfc015 100644 --- a/util/marcdump.c +++ b/util/marcdump.c @@ -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++;