X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fopacdisp.c;h=1cef0d3f909dcdf51c1a8ec8df63ae870f0cd8c7;hb=bd2e35d738cb215abd9b113ffe3859a65b39d619;hp=3f40383842566b2f0a26d99659a4e5393a75acc5;hpb=05c274ef315384faafcc5900c17468f0ea2474e6;p=yaz-moved-to-github.git diff --git a/src/opacdisp.c b/src/opacdisp.c index 3f40383..1cef0d3 100644 --- a/src/opacdisp.c +++ b/src/opacdisp.c @@ -1,8 +1,8 @@ /* - * Copyright (c) 2003-2004, Index Data. + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: opacdisp.c,v 1.3 2004-10-15 00:19:00 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); +} +