X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmarcdisp.c;h=d07d2911e1c6a85b176314c9f30e44185e5c403d;hb=1769f2fbe5b8de995b351754eec51ccdb1824dd4;hp=ef0642545dbd8802d655f3aab7bcdaeed72b7527;hpb=905df6869e5ad8ab9f34590cce771fe50c444473;p=yaz-moved-to-github.git diff --git a/src/marcdisp.c b/src/marcdisp.c index ef06425..d07d291 100644 --- a/src/marcdisp.c +++ b/src/marcdisp.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 1995-2004, Index Data + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: marcdisp.c,v 1.11 2004-12-30 00:12:13 adam Exp $ + * $Id: marcdisp.c,v 1.13 2005-02-02 20:50:38 adam Exp $ */ /** @@ -26,6 +26,8 @@ struct yaz_marc_t_ { int xml; int debug; yaz_iconv_t iconv_cd; + char subfield_str[8]; + char endline_str[8]; }; yaz_marc_t yaz_marc_create(void) @@ -35,9 +37,23 @@ yaz_marc_t yaz_marc_create(void) mt->debug = 0; mt->m_wr = wrbuf_alloc(); mt->iconv_cd = 0; + strcpy(mt->subfield_str, " $"); + strcpy(mt->endline_str, "\n"); return mt; } +void yaz_marc_subfield_str(yaz_marc_t mt, const char *s) +{ + strncpy(mt->subfield_str, s, sizeof(mt->subfield_str)-1); + mt->subfield_str[sizeof(mt->subfield_str)-1] = '\0'; +} + +void yaz_marc_endline_str(yaz_marc_t mt, const char *s) +{ + strncpy(mt->endline_str, s, sizeof(mt->endline_str)-1); + mt->endline_str[sizeof(mt->endline_str)-1] = '\0'; +} + void yaz_marc_destroy(yaz_marc_t mt) { if (!mt) @@ -376,7 +392,7 @@ int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) i += identifier_length; break; case YAZ_MARC_LINE: - wrbuf_puts (wr, " $"); + wrbuf_puts (wr, mt->subfield_str); marc_cdata(mt, buf+i, identifier_length-1, wr); i = i+identifier_length-1; wrbuf_putc (wr, ' '); @@ -425,7 +441,7 @@ int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) marc_cdata(mt, buf + i, 1, wr); } if (mt->xml == YAZ_MARC_LINE) - wrbuf_putc (wr, '\n'); + wrbuf_puts (wr, mt->endline_str); if (i < end_offset) wrbuf_printf(wr, " \n", data_length); if (buf[i] != ISO2709_RS && buf[i] != ISO2709_FS) @@ -437,15 +453,15 @@ int yaz_marc_decode_wrbuf (yaz_marc_t mt, const char *buf, int bsize, WRBUF wr) break; case YAZ_MARC_OAIMARC: if (identifier_flag) - wrbuf_puts (wr, " \n"); + wrbuf_puts (wr, "\n"); else - wrbuf_puts (wr, " \n"); + wrbuf_puts (wr, "\n"); break; case YAZ_MARC_MARCXML: if (identifier_flag) - wrbuf_puts (wr, " \n"); + wrbuf_puts (wr, "\n"); else - wrbuf_puts (wr, " \n"); + wrbuf_puts (wr, "\n"); break; } }