projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Initial work for Doxygen based YAZ reference
[yaz-moved-to-github.git]
/
src
/
marcdisp.c
diff --git
a/src/marcdisp.c
b/src/marcdisp.c
index
652db12
..
171e5a3
100644
(file)
--- a/
src/marcdisp.c
+++ b/
src/marcdisp.c
@@
-2,7
+2,7
@@
* Copyright (c) 1995-2004, Index Data
* See the file LICENSE for details.
*
* Copyright (c) 1995-2004, Index Data
* See the file LICENSE for details.
*
- * $Id: marcdisp.c,v 1.4 2004-03-15 21:39:06 adam Exp $
+ * $Id: marcdisp.c,v 1.7 2004-10-01 11:45:48 adam Exp $
*/
#if HAVE_CONFIG_H
*/
#if HAVE_CONFIG_H
@@
-43,7
+43,6
@@
void yaz_marc_destroy(yaz_marc_t mt)
static void marc_cdata (yaz_marc_t mt, const char *buf, size_t len, WRBUF wr)
{
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)
if (mt->xml == YAZ_MARC_ISO2709)
wrbuf_iconv_write(wr, mt->iconv_cd, buf, len);
else if (mt->xml == YAZ_MARC_LINE)
@@
-135,7
+134,13
@@
int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr)
wr,
"<record xmlns=\"http://www.loc.gov/MARC21/slim\">\n"
" <leader>");
wr,
"<record xmlns=\"http://www.loc.gov/MARC21/slim\">\n"
" <leader>");
- marc_cdata(mt, buf, 24, wr);
+#if 1
+ marc_cdata(mt, buf, 9, wr);
+ marc_cdata(mt, "a", 1, wr); /* set leader to signal unicode */
+ marc_cdata(mt, buf+10, 14, wr);
+#else
+ marc_cdata(mt, buf, 24, wr); /* leave header as is .. */
+#endif
wrbuf_printf(wr, "</leader>\n");
break;
}
wrbuf_printf(wr, "</leader>\n");
break;
}
@@
-266,19
+271,25
@@
int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr)
wrbuf_puts (wr, " ");
break;
case YAZ_MARC_SIMPLEXML:
wrbuf_puts (wr, " ");
break;
case YAZ_MARC_SIMPLEXML:
- wrbuf_printf (wr, "<field tag=\"%s\"", tag);
+ wrbuf_printf (wr, "<field tag=\"");
+ marc_cdata(mt, tag, strlen(tag), wr);
+ wrbuf_printf(wr, "\"");
break;
case YAZ_MARC_OAIMARC:
if (identifier_flag)
break;
case YAZ_MARC_OAIMARC:
if (identifier_flag)
- wrbuf_printf (wr, " <varfield id=\"%s\"", tag);
+ wrbuf_printf (wr, " <varfield id=\"");
else
else
- wrbuf_printf (wr, " <fixfield id=\"%s\"", tag);
+ wrbuf_printf (wr, " <fixfield id=\"");
+ marc_cdata(mt, tag, strlen(tag), wr);
+ wrbuf_printf(wr, "\"");
break;
case YAZ_MARC_MARCXML:
if (identifier_flag)
break;
case YAZ_MARC_MARCXML:
if (identifier_flag)
- wrbuf_printf (wr, " <datafield tag=\"%s\"", tag);
+ wrbuf_printf (wr, " <datafield tag=\"");
else
else
- wrbuf_printf (wr, " <controlfield tag=\"%s\"", tag);
+ wrbuf_printf (wr, " <controlfield tag=\"");
+ marc_cdata(mt, tag, strlen(tag), wr);
+ wrbuf_printf(wr, "\"");
}
if (identifier_flag)
}
if (identifier_flag)
@@
-296,13
+307,19
@@
int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr)
wrbuf_putc(wr, buf[i]);
break;
case YAZ_MARC_SIMPLEXML:
wrbuf_putc(wr, buf[i]);
break;
case YAZ_MARC_SIMPLEXML:
- wrbuf_printf(wr, " Indicator%d=\"%c\"", j+1, buf[i]);
+ wrbuf_printf(wr, " Indicator%d=\"", j+1);
+ marc_cdata(mt, buf+i, 1, wr);
+ wrbuf_printf(wr, "\"");
break;
case YAZ_MARC_OAIMARC:
break;
case YAZ_MARC_OAIMARC:
- wrbuf_printf(wr, " i%d=\"%c\"", j+1, buf[i]);
+ wrbuf_printf(wr, " i%d=\"", j+1);
+ marc_cdata(mt, buf+i, 1, wr);
+ wrbuf_printf(wr, "\"");
break;
case YAZ_MARC_MARCXML:
break;
case YAZ_MARC_MARCXML:
- wrbuf_printf(wr, " ind%d=\"%c\"", j+1, buf[i]);
+ wrbuf_printf(wr, " ind%d=\"", j+1);
+ marc_cdata(mt, buf+i, 1, wr);
+ wrbuf_printf(wr, "\"");
}
}
}
}
}
}
@@
-334,26
+351,26
@@
int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr)
break;
case YAZ_MARC_LINE:
wrbuf_puts (wr, " $");
break;
case YAZ_MARC_LINE:
wrbuf_puts (wr, " $");
- for (j = 1; j<identifier_length; j++, i++)
- wrbuf_putc (wr, buf[i]);
+ marc_cdata(mt, buf+i, identifier_length-1, wr);
+ i = i+identifier_length-1;
wrbuf_putc (wr, ' ');
break;
case YAZ_MARC_SIMPLEXML:
wrbuf_puts (wr, " <subfield code=\"");
wrbuf_putc (wr, ' ');
break;
case YAZ_MARC_SIMPLEXML:
wrbuf_puts (wr, " <subfield code=\"");
- for (j = 1; j<identifier_length; j++, i++)
- wrbuf_putc (wr, buf[i]);
+ marc_cdata(mt, buf+i, identifier_length-1, wr);
+ i = i+identifier_length-1;
wrbuf_puts (wr, "\">");
break;
case YAZ_MARC_OAIMARC:
wrbuf_puts (wr, " <subfield label=\"");
wrbuf_puts (wr, "\">");
break;
case YAZ_MARC_OAIMARC:
wrbuf_puts (wr, " <subfield label=\"");
- for (j = 1; j<identifier_length; j++, i++)
- wrbuf_putc (wr, buf[i]);
+ marc_cdata(mt, buf+i, identifier_length-1, wr);
+ i = i+identifier_length-1;
wrbuf_puts (wr, "\">");
break;
case YAZ_MARC_MARCXML:
wrbuf_puts (wr, " <subfield code=\"");
wrbuf_puts (wr, "\">");
break;
case YAZ_MARC_MARCXML:
wrbuf_puts (wr, " <subfield code=\"");
- for (j = 1; j<identifier_length; j++, i++)
- wrbuf_putc (wr, buf[i]);
+ marc_cdata(mt, buf+i, identifier_length-1, wr);
+ i = i+identifier_length-1;
wrbuf_puts (wr, "\">");
break;
}
wrbuf_puts (wr, "\">");
break;
}