X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fopacdisp.c;h=1cef0d3f909dcdf51c1a8ec8df63ae870f0cd8c7;hb=fe3ae86a97bef6a815e2f04cdcaa77307801c902;hp=3ee7ff67da6a900ac60ff92930fc013a8c70521e;hpb=4c176312acdc3444c9afc820f76a393e64668e52;p=yaz-moved-to-github.git diff --git a/src/opacdisp.c b/src/opacdisp.c index 3ee7ff6..1cef0d3 100644 --- a/src/opacdisp.c +++ b/src/opacdisp.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: opacdisp.c,v 1.4 2005-01-15 19:47:14 adam Exp $ + * $Id: opacdisp.c,v 1.6 2005-03-02 23:59:22 adam Exp $ */ /** * \file opacdisp.c @@ -15,6 +15,7 @@ #include #include +#include static void opac_element_str(WRBUF wrbuf, int l, const char *elem, const char *data) @@ -49,9 +50,21 @@ static void opac_element_bool(WRBUF wrbuf, int l, const char *elem, int *data) } } -void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags) +void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf) { int i; + + wrbuf_puts(wrbuf, "\n"); + if (r->bibliographicRecord) + { + Z_External *ext = r->bibliographicRecord; + + wrbuf_puts (wrbuf, " \n"); + if (ext->which == Z_External_octet) + yaz_marc_decode_wrbuf(mt, ext->u.octet_aligned->buf, + ext->u.octet_aligned->len, wrbuf); + wrbuf_puts (wrbuf, " \n"); + } wrbuf_puts(wrbuf, "\n"); for (i = 0; i < r->num_holdingsData; i++) @@ -61,8 +74,13 @@ void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags) if (h->which == Z_HoldingsRecord_marcHoldingsRecord) { - wrbuf_puts (wrbuf, " \n"); - /* h->u.marcHoldingsRecord) */ + Z_External *ext = h->u.marcHoldingsRecord; + + wrbuf_puts (wrbuf, " \n"); + if (ext->which == Z_External_octet) + yaz_marc_decode_wrbuf(mt, ext->u.octet_aligned->buf, + ext->u.octet_aligned->len, wrbuf); + wrbuf_puts (wrbuf, " \n"); } else if (h->which == Z_HoldingsRecord_holdingsAndCirc) { @@ -138,4 +156,15 @@ void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags) wrbuf_puts(wrbuf, " \n"); } wrbuf_puts(wrbuf, "\n"); + wrbuf_puts(wrbuf, "\n"); } + +void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *opac_rec, int flags) +{ + yaz_marc_t mt = yaz_marc_create(); + + yaz_marc_xml(mt, YAZ_MARC_MARCXML); + yaz_opac_decode_wrbuf(mt, opac_rec, wrbuf); + yaz_marc_destroy(mt); +} +