}
/* read MARC record and convert to XML */
-char *dummy_xml_record(int num, ODR odr)
+char *dummy_xml_record(int num, ODR odr, const char *esn)
{
char *rec = dummy_marc_record(num, odr);
if (rec)
{
- const char *result;
- size_t rlen;
- int len;
+ WRBUF w = wrbuf_alloc();
yaz_marc_t mt = yaz_marc_create();
+
yaz_marc_xml(mt, YAZ_MARC_MARCXML);
- len = yaz_marc_decode_buf(mt, rec, -1, &result, &rlen);
- if (len > 1)
+ if (esn && !strcmp(esn, "OP"))
+ {
+ /* generate OPACXML (OPAC in XML) */
+ Z_OPACRecord *opac = dummy_opac(num, odr, rec);
+ yaz_opac_decode_wrbuf(mt, opac, w);
+ }
+ else
{
- rec = (char *) odr_malloc(odr, rlen+1);
- memcpy(rec, result, rlen);
- rec[rlen] = '\0';
+ /* generate MARCXML */
+ yaz_marc_decode_wrbuf(mt, rec, -1, w);
}
+ rec = odr_strdup(odr, wrbuf_cstr(w));
yaz_marc_destroy(mt);
+ wrbuf_destroy(w);
+
}
return rec;
}
char *cp;
const Odr_oid *oid = r->request_format;
struct result_set *set = get_set(sh, r->setname);
+ const char *esn = yaz_get_esn(r->comp);
if (!set)
{
}
else if (!oid_oidcmp(oid, yaz_oid_recsyn_xml))
{
- if ((cp = dummy_xml_record(r->number, r->stream)))
+ if ((cp = dummy_xml_record(r->number, r->stream, esn)))
{
r->len = strlen(cp);
r->record = cp;
Z_GenericRecord *dummy_grs_record(int num, ODR o);
char *dummy_marc_record(int num, ODR odr);
-char *dummy_xml_record(int num, ODR odr);
+char *dummy_xml_record(int num, ODR odr, const char *esn);
Z_OPACRecord *dummy_opac(int num, ODR odr, const char *marc_input);
/*