-/* $Id: yaz-proxy.cpp,v 1.23 2005-02-21 14:27:32 adam Exp $
+/* $Id: yaz-proxy.cpp,v 1.24 2005-02-22 10:08:20 adam Exp $
Copyright (c) 1998-2005, Index Data.
This file is part of the yaz-proxy.
m_referenceId = 0;
m_referenceId_mem = nmem_create();
m_config = 0;
- m_marcxml_flag = 0;
+ m_marcxml_mode = none;
m_stylesheet_xsp = 0;
m_stylesheet_nprl = 0;
m_s2z_stylesheet = 0;
if (npr->which == Z_NamePlusRecord_databaseRecord)
{
Z_External *r = npr->u.databaseRecord;
- if (r->which == Z_External_octet)
+ if (r->which == Z_External_OPAC)
+ {
+ WRBUF w = wrbuf_alloc();
+
+ yaz_display_OPAC(w, r->u.opac, 0);
+ npr->u.databaseRecord = z_ext_record(
+ odr_encode(), VAL_TEXT_XML,
+ wrbuf_buf(w), wrbuf_len(w)
+ );
+ wrbuf_free(w, 1);
+ }
+ else if (r->which == Z_External_octet)
{
int rlen;
char *result;
r->u.octet_aligned->len,
&result, &rlen))
{
- npr->u.databaseRecord = z_ext_record(odr_encode(),
- VAL_TEXT_XML,
- result, rlen);
+ npr->u.databaseRecord =
+ z_ext_record(odr_encode(), VAL_TEXT_XML, result, rlen);
}
}
}
#endif
)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
- if (m_marcxml_flag)
+ if (m_marcxml_mode == marcxml)
convert_to_marcxml(p->u.databaseOrSurDiagnostics,
m_backend_charset);
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
#endif
)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
- if (m_marcxml_flag)
+ if (m_marcxml_mode == marcxml)
convert_to_marcxml(p->u.databaseOrSurDiagnostics,
m_backend_charset);
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
Z_APDU *Yaz_Proxy::handle_syntax_validation(Z_APDU *apdu)
{
- m_marcxml_flag = 0;
+ m_marcxml_mode = none;
if (apdu->which == Z_APDU_searchRequest)
{
Z_SearchRequest *sr = apdu->u.searchRequest;
{
sr->smallSetElementSetNames = 0;
sr->mediumSetElementSetNames = 0;
+ m_marcxml_mode = marcxml;
if (m_backend_type)
{
sr->preferredRecordSyntax =
yaz_oidval_to_z3950oid(odr_encode(), CLASS_RECSYN,
VAL_USMARC);
- m_marcxml_flag = 1;
}
else if (err)
{
if (err == -1)
{
pr->recordComposition = 0;
+ m_marcxml_mode = marcxml;
if (m_backend_type)
{
pr->preferredRecordSyntax =
yaz_oidval_to_z3950oid(odr_encode(), CLASS_RECSYN,
VAL_USMARC);
- m_marcxml_flag = 1;
}
else if (err)
{