X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fmarcdisp.c;h=7cadfcdf13ccc826cd282cb859a5060a4d44f1d5;hb=366dc7568281c9774cd309b28c24a077604264a0;hp=78b48337ed34281a7fb90b48a5ffdea33919456f;hpb=50319ad67f5bae49fc9449bd6105dfa357f2dbb3;p=yaz-moved-to-github.git diff --git a/util/marcdisp.c b/util/marcdisp.c index 78b4833..7cadfcd 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.21 2002-10-04 10:19:58 adam Exp $ + * $Id: marcdisp.c,v 1.24 2002-12-03 10:03:27 adam Exp $ */ #if HAVE_CONFIG_H @@ -60,28 +60,9 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) { char str[80]; int i; - if (xml > 1) - { - wrbuf_puts( - wr, - "\n", - buf[5], buf[6], buf[7]); - wrbuf_puts (wr, str); - } - else + switch(xml) { + case YAZ_MARC_XML: wrbuf_puts (wr, "\n"); + break; + case YAZ_MARC_OAIMARC: + wrbuf_puts( + wr, + "\n", + buf[5], buf[6], buf[7]); + wrbuf_puts (wr, str); + break; + case YAZ_MARC_MARCXML: + wrbuf_printf( + wr, + "\n" + " \n" + " %.24s\n", buf); + break; } } if (debug) @@ -152,51 +156,51 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) } else if (!memcmp (tag, "00", 2)) identifier_flag = 0; - - - if (xml) - { - if (xml > 1) - { - if (identifier_flag) - wrbuf_puts (wr, " 1) - sprintf (nostr, " i%d=\"%c\"", j+1, buf[i]); - else - sprintf (nostr, " Indicator%d=\"%c\"", j+1, buf[i]); - wrbuf_puts (wr, nostr); - } - else + case YAZ_MARC_LINE: + if (debug) + wrbuf_puts (wr, " Ind: "); wrbuf_putc (wr, buf[i]); + break; + case YAZ_MARC_XML: + wrbuf_printf (wr, " Indicator%d=\"%c\"", j+1, buf[i]); + break; + case YAZ_MARC_OAIMARC: + wrbuf_printf (wr, " i%d=\"%c\"", j+1, buf[i]); + break; + case YAZ_MARC_MARCXML: + wrbuf_printf (wr, " ind%d=\"%c\"", j+1, buf[i]); + } } } if (xml) @@ -215,30 +219,40 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) if (identifier_flag) { i++; - if (xml) + switch(xml) { - if (xml > 1) - wrbuf_puts (wr, " "); - } - else - { - wrbuf_puts (wr, " $"); + break; + case YAZ_MARC_OAIMARC: + wrbuf_puts (wr, " "); + break; + case YAZ_MARC_MARCXML: + wrbuf_puts (wr, " "); + break; } while (buf[i] != ISO2709_RS && buf[i] != ISO2709_IDFS && buf[i] != ISO2709_FS && i < end_offset) { if (xml && buf[i] == '<') - wrbuf_puts(wr, "<"); + wrbuf_puts(wr, "<"); else if (xml && buf[i] == '&') - wrbuf_puts(wr, "&"); + wrbuf_puts(wr, "&"); else wrbuf_putc (wr, buf[i]); i++; @@ -265,22 +279,42 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) wrbuf_puts (wr, " \n"); if (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS) wrbuf_puts (wr, " \n"); - if (xml) + switch(xml) { - if (xml > 1) - { - if (identifier_flag) - wrbuf_puts (wr, "\n"); - else - wrbuf_puts (wr, "\n"); - } + case YAZ_MARC_LINE: + break; + case YAZ_MARC_XML: + wrbuf_puts (wr, "\n"); + break; + case YAZ_MARC_OAIMARC: + if (identifier_flag) + wrbuf_puts (wr, " \n"); + else + wrbuf_puts (wr, " \n"); + break; + case YAZ_MARC_MARCXML: + if (identifier_flag) + wrbuf_puts (wr, " \n"); else - wrbuf_puts (wr, "\n"); + wrbuf_puts (wr, " \n"); + break; } } - if (xml) + switch(xml) + { + case YAZ_MARC_LINE: + wrbuf_puts (wr, ""); + break; + case YAZ_MARC_XML: wrbuf_puts (wr, "\n"); - wrbuf_puts (wr, ""); + break; + case YAZ_MARC_OAIMARC: + wrbuf_puts (wr, "\n"); + break; + case YAZ_MARC_MARCXML: + wrbuf_puts (wr, " \n\n"); + break; + } return record_length; }