From 50319ad67f5bae49fc9449bd6105dfa357f2dbb3 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Fri, 4 Oct 2002 10:19:58 +0000 Subject: [PATCH 1/1] OAI MARC display --- util/marcdisp.c | 107 +++++++++++++++++++++++++++++++++++++++++-------------- util/marcdump.c | 9 +++-- 2 files changed, 87 insertions(+), 29 deletions(-) diff --git a/util/marcdisp.c b/util/marcdisp.c index 8133832..78b4833 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.20 2002-10-02 15:51:52 adam Exp $ + * $Id: marcdisp.c,v 1.21 2002-10-04 10:19:58 adam Exp $ */ #if HAVE_CONFIG_H @@ -58,19 +58,42 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) if (xml) { - char str[40]; + char str[80]; int i; - wrbuf_puts (wr, " 1) { - sprintf (str, " ImplDefined%d=\"%c\"\n", i, buf[6+i]); + wrbuf_puts( + wr, + "\n", + buf[5], buf[6], buf[7]); wrbuf_puts (wr, str); } - wrbuf_puts (wr, ">\n"); + else + { + wrbuf_puts (wr, "\n"); + } } if (debug) { @@ -115,19 +138,6 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) memcpy (tag, buf+entry_p, 3); entry_p += 3; tag[3] = '\0'; - if (xml) - { - wrbuf_puts (wr, " 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 @@ -177,7 +217,10 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) i++; if (xml) { - wrbuf_puts (wr, " 1) + wrbuf_puts (wr, " "); @@ -209,6 +252,8 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) wrbuf_puts(wr, "<"); else if (xml && buf[i] == '&') wrbuf_puts(wr, "&"); + else if (xml && buf[i] == '"') + wrbuf_puts(wr, """); else wrbuf_putc (wr, buf[i]); i++; @@ -221,7 +266,17 @@ int yaz_marc_decode (const char *buf, WRBUF wr, int debug, int bsize, int xml) if (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS) wrbuf_puts (wr, " \n"); if (xml) - wrbuf_puts (wr, "\n"); + { + if (xml > 1) + { + if (identifier_flag) + wrbuf_puts (wr, "\n"); + else + wrbuf_puts (wr, "\n"); + } + else + wrbuf_puts (wr, "\n"); + } } if (xml) wrbuf_puts (wr, "\n"); diff --git a/util/marcdump.c b/util/marcdump.c index eb197ef..b3ff370 100644 --- a/util/marcdump.c +++ b/util/marcdump.c @@ -3,7 +3,7 @@ * See the file LICENSE for details. * Sebastian Hammer, Adam Dickmeiss * - * $Id: marcdump.c,v 1.16 2002-03-18 21:33:48 adam Exp $ + * $Id: marcdump.c,v 1.17 2002-10-04 10:19:58 adam Exp $ */ #if HAVE_CONFIG_H @@ -29,7 +29,7 @@ static void usage(const char *prog) { - fprintf (stderr, "Usage: %s [-c cfile] [-x] [-v] file...\n", prog); + fprintf (stderr, "Usage: %s [-c cfile] [-x] [-O] [-v] file...\n", prog); } int main (int argc, char **argv) @@ -44,7 +44,7 @@ int main (int argc, char **argv) int xml = 0; FILE *cfile = 0; - while ((r = options("vc:x", argv, argc, &arg)) != -2) + while ((r = options("vc:xO", argv, argc, &arg)) != -2) { int count; no++; @@ -58,6 +58,9 @@ int main (int argc, char **argv) case 'x': xml = 1; break; + case 'O': + xml = 2; + break; case 0: inf = fopen (arg, "r"); count = 0; -- 1.7.10.4