X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fmarcdisp.c;h=81338326117e420a8be8ba976f3ac3bf7c6d1f14;hb=906a5ab4a9c3b8b9a4bef15de1df58ab873a1cb5;hp=f728d12a699ac2754929a71365ac07c661fc648e;hpb=08e514143cd7d16db15c1c3d4d15d687f561c047;p=yaz-moved-to-github.git diff --git a/util/marcdisp.c b/util/marcdisp.c index f728d12..8133832 100644 --- a/util/marcdisp.c +++ b/util/marcdisp.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2002, Index Data * See the file LICENSE for details. * - * $Id: marcdisp.c,v 1.18 2002-02-28 13:21:16 adam Exp $ + * $Id: marcdisp.c,v 1.20 2002-10-02 15:51:52 adam Exp $ */ #if HAVE_CONFIG_H @@ -56,9 +56,28 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) length_starting = atoi_n (buf+21, 1); length_implementation = atoi_n (buf+22, 1); + if (xml) + { + char str[40]; + int i; + wrbuf_puts (wr, "\n"); + } if (debug) { char str[40]; + + if (xml) + wrbuf_puts (wr, "\n"); } + for (entry_p = 24; buf[entry_p] != ISO2709_FS; ) { entry_p += 3+length_data_entry+length_starting; @@ -95,7 +117,7 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) tag[3] = '\0'; if (xml) { - wrbuf_puts (wr, ""); @@ -170,15 +192,25 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) while (buf[i] != ISO2709_RS && buf[i] != ISO2709_IDFS && buf[i] != ISO2709_FS && i < end_offset) { - wrbuf_putc (wr, buf[i]); + if (xml && buf[i] == '<') + wrbuf_puts(wr, "<"); + else if (xml && buf[i] == '&') + wrbuf_puts(wr, "&"); + else + wrbuf_putc (wr, buf[i]); i++; } if (xml) - wrbuf_puts (wr, "\n"); + wrbuf_puts (wr, "\n"); } else { - wrbuf_putc (wr, buf[i]); + if (xml && buf[i] == '<') + wrbuf_puts(wr, "<"); + else if (xml && buf[i] == '&') + wrbuf_puts(wr, "&"); + else + wrbuf_putc (wr, buf[i]); i++; } } @@ -191,6 +223,8 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) if (xml) wrbuf_puts (wr, "\n"); } + if (xml) + wrbuf_puts (wr, "\n"); wrbuf_puts (wr, ""); return record_length; }