X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fopacdisp.c;h=79c1dde29a958c7f6bc25404f6d4e3151670cdde;hb=77d6853aec94df6c69da9cd35d8ba982b9b12299;hp=3f40383842566b2f0a26d99659a4e5393a75acc5;hpb=05c274ef315384faafcc5900c17468f0ea2474e6;p=yaz-moved-to-github.git diff --git a/src/opacdisp.c b/src/opacdisp.c index 3f40383..79c1dde 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.5 2005-02-25 17:05:09 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,11 +50,22 @@ 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"); + } for (i = 0; i < r->num_holdingsData; i++) { Z_HoldingsRecord *h = r->holdingsData[i]; @@ -61,8 +73,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) { @@ -139,3 +156,13 @@ void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags) } 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); +} +