bibliographic (MARC) record as well. Added yaz_opac_decode_wrbuf
to supplement yaz_marc_decode_wrbuf.
Possible compatibility problems with earlier versions marked with '*'.
Possible compatibility problems with earlier versions marked with '*'.
+Extended OPAC display utility. OPAC display utility renders
+bibliographic (MARC) record as well. Added yaz_opac_decode_wrbuf
+to supplement yaz_marc_decode_wrbuf.
+
--- 2.0.34 2005/02/08
Fixes for UNIX domain sockets. Bug #261.
--- 2.0.34 2005/02/08
Fixes for UNIX domain sockets. Bug #261.
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: proto.h,v 1.19 2005-01-27 09:06:51 adam Exp $
+ * $Id: proto.h,v 1.20 2005-02-25 17:05:09 adam Exp $
#include <yaz/zgdu.h>
#include <yaz/z-oclcui.h>
#include <yaz/zgdu.h>
#include <yaz/z-oclcui.h>
+#include <yaz/marcdisp.h>
/** \brief Performs "pretty" display of OPAC record to WRBUF */
YAZ_EXPORT void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags);
/** \brief Performs "pretty" display of OPAC record to WRBUF */
YAZ_EXPORT void yaz_display_OPAC(WRBUF wrbuf, Z_OPACRecord *r, int flags);
+/** \brief Performs "pretty" display of OPAC record to WRBUF using marc_t */
+void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r, WRBUF wrbuf);
+
/** \brief Encodes Z39.50 Init OPtions based on string mnemonics */
YAZ_EXPORT int yaz_init_opt_encode(Z_Options *opt, const char *opt_str,
int *error_pos);
/** \brief Encodes Z39.50 Init OPtions based on string mnemonics */
YAZ_EXPORT int yaz_init_opt_encode(Z_Options *opt, const char *opt_str,
int *error_pos);
* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
* 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.5 2005-02-25 17:05:09 adam Exp $
*/
/**
* \file opacdisp.c
*/
/**
* \file opacdisp.c
#include <ctype.h>
#include <yaz/proto.h>
#include <ctype.h>
#include <yaz/proto.h>
+#include <yaz/marcdisp.h>
static void opac_element_str(WRBUF wrbuf, int l, const char *elem,
const char *data)
static void opac_element_str(WRBUF wrbuf, int l, const char *elem,
const char *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)
wrbuf_puts(wrbuf, "<holdings>\n");
wrbuf_puts(wrbuf, "<holdings>\n");
+ if (r->bibliographicRecord)
+ {
+ Z_External *ext = r->bibliographicRecord;
+
+ wrbuf_puts (wrbuf, " <bibliographicRecord>\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, " </bibliographicRecord>\n");
+ }
for (i = 0; i < r->num_holdingsData; i++)
{
Z_HoldingsRecord *h = r->holdingsData[i];
for (i = 0; i < r->num_holdingsData; i++)
{
Z_HoldingsRecord *h = r->holdingsData[i];
if (h->which == Z_HoldingsRecord_marcHoldingsRecord)
{
if (h->which == Z_HoldingsRecord_marcHoldingsRecord)
{
- wrbuf_puts (wrbuf, " <marc/>\n");
- /* h->u.marcHoldingsRecord) */
+ Z_External *ext = h->u.marcHoldingsRecord;
+
+ wrbuf_puts (wrbuf, " <marcHoldingsRecord>\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, " </marcHoldingsRecord>\n");
}
else if (h->which == Z_HoldingsRecord_holdingsAndCirc)
{
}
else if (h->which == Z_HoldingsRecord_holdingsAndCirc)
{
}
wrbuf_puts(wrbuf, "</holdings>\n");
}
}
wrbuf_puts(wrbuf, "</holdings>\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);
+}
+