X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmarcdisp.c;h=a544fcf90c9244b1a1206895510326168c1c2261;hb=719e0dcf2d15c08086a06457701e21c6aff3d791;hp=7dbb7eaab3668b56f18df3e9e34fc5a7c2c7773a;hpb=6ad80c673e9591ae178154cfe2ce002834cfdafd;p=yaz-moved-to-github.git diff --git a/src/marcdisp.c b/src/marcdisp.c index 7dbb7ea..a544fcf 100644 --- a/src/marcdisp.c +++ b/src/marcdisp.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 1995-2003, Index Data + * Copyright (c) 1995-2004, Index Data * See the file LICENSE for details. * - * $Id: marcdisp.c,v 1.2 2003-12-11 00:37:22 adam Exp $ + * $Id: marcdisp.c,v 1.5 2004-03-16 13:15:58 adam Exp $ */ #if HAVE_CONFIG_H @@ -43,56 +43,12 @@ void yaz_marc_destroy(yaz_marc_t mt) static void marc_cdata (yaz_marc_t mt, const char *buf, size_t len, WRBUF wr) { - size_t i; if (mt->xml == YAZ_MARC_ISO2709) - { wrbuf_iconv_write(wr, mt->iconv_cd, buf, len); - } else if (mt->xml == YAZ_MARC_LINE) - { wrbuf_iconv_write(wr, mt->iconv_cd, buf, len); - } else - { - int j = 0; - for (i = 0; i j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - wrbuf_puts(wr, "<"); - j=i+1; - break; - case '>': - if (i > j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - wrbuf_puts(wr, ">"); - j=i+1; - break; - case '&': - if (i > j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - wrbuf_puts(wr, "&"); - j=i+1; - break; - case '"': - if (i > j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - wrbuf_puts(wr, """); - j=i+1; - break; - case '\'': - if (i > j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - wrbuf_puts(wr, "'"); - j=i+1; - break; - } - } - if (i > j) - wrbuf_iconv_write(wr, mt->iconv_cd, buf+j, i-j); - } + wrbuf_iconv_write_cdata(wr, mt->iconv_cd, buf, len); } int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) @@ -177,7 +133,9 @@ int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) wrbuf_printf( wr, "\n" - " %.24s\n", buf); + " "); + marc_cdata(mt, buf, 24, wr); + wrbuf_printf(wr, "\n"); break; } } @@ -212,6 +170,11 @@ int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) if (entry_p >= record_length) return -1; } + if (mt->debug && base_address != entry_p+1) + { + wrbuf_printf (wr," \n", base_address, entry_p+1); + } base_address = entry_p+1; if (mt->xml == YAZ_MARC_ISO2709)