projects
/
yazproxy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New attribute "backendcharset" for syntax section which specifies
[yazproxy-moved-to-github.git]
/
src
/
yaz-proxy.cpp
diff --git
a/src/yaz-proxy.cpp
b/src/yaz-proxy.cpp
index
f319d5d
..
3b43840
100644
(file)
--- a/
src/yaz-proxy.cpp
+++ b/
src/yaz-proxy.cpp
@@
-1,4
+1,4
@@
-/* $Id: yaz-proxy.cpp,v 1.5 2004-08-10 09:02:16 adam Exp $
+/* $Id: yaz-proxy.cpp,v 1.6 2004-08-29 13:01:43 adam Exp $
Copyright (c) 1998-2004, Index Data.
This file is part of the yaz-proxy.
Copyright (c) 1998-2004, Index Data.
This file is part of the yaz-proxy.
@@
-142,6
+142,7
@@
Yaz_Proxy::Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable,
m_s2z_database = 0;
m_schema = 0;
m_backend_type = 0;
m_s2z_database = 0;
m_schema = 0;
m_backend_type = 0;
+ m_backend_charset = 0;
m_frontend_type = 0;
m_initRequest_apdu = 0;
m_initRequest_mem = 0;
m_frontend_type = 0;
m_initRequest_apdu = 0;
m_initRequest_mem = 0;
@@
-193,6
+194,7
@@
Yaz_Proxy::~Yaz_Proxy()
xfree (m_schema);
xfree (m_backend_type);
xfree (m_schema);
xfree (m_backend_type);
+ xfree (m_backend_charset);
if (m_s2z_odr_init)
odr_destroy(m_s2z_odr_init);
if (m_s2z_odr_search)
if (m_s2z_odr_init)
odr_destroy(m_s2z_odr_init);
if (m_s2z_odr_search)
@@
-752,10
+754,13
@@
void Yaz_Proxy::convert_to_frontend_type(Z_NamePlusRecordList *p)
}
}
}
}
-void Yaz_Proxy::convert_to_marcxml(Z_NamePlusRecordList *p)
+void Yaz_Proxy::convert_to_marcxml(Z_NamePlusRecordList *p,
+ const char *backend_charset)
{
int i;
{
int i;
+ if (!backend_charset)
+ backend_charset = "MARC-8";
yaz_iconv_t cd = yaz_iconv_open("UTF-8", "MARC-8");
yaz_marc_t mt = yaz_marc_create();
yaz_marc_xml(mt, YAZ_MARC_MARCXML);
yaz_iconv_t cd = yaz_iconv_open("UTF-8", "MARC-8");
yaz_marc_t mt = yaz_marc_create();
yaz_marc_xml(mt, YAZ_MARC_MARCXML);
@@
-1092,7
+1097,8
@@
int Yaz_Proxy::send_to_client(Z_APDU *apdu)
if (m_backend_type)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
if (m_marcxml_flag)
if (m_backend_type)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
if (m_marcxml_flag)
- convert_to_marcxml(p->u.databaseOrSurDiagnostics);
+ convert_to_marcxml(p->u.databaseOrSurDiagnostics,
+ m_backend_charset);
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
return 0;
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
return 0;
@@
-1132,7
+1138,8
@@
int Yaz_Proxy::send_to_client(Z_APDU *apdu)
if (m_backend_type)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
if (m_marcxml_flag)
if (m_backend_type)
convert_to_frontend_type(p->u.databaseOrSurDiagnostics);
if (m_marcxml_flag)
- convert_to_marcxml(p->u.databaseOrSurDiagnostics);
+ convert_to_marcxml(p->u.databaseOrSurDiagnostics,
+ m_backend_charset);
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
return 0;
}
if (convert_xsl(p->u.databaseOrSurDiagnostics, apdu))
return 0;
}
@@
-1645,7
+1652,7
@@
Z_APDU *Yaz_Proxy::handle_syntax_validation(Z_APDU *apdu)
m_default_target,
sr->preferredRecordSyntax, rc,
&addinfo, &stylesheet_name, &m_schema,
m_default_target,
sr->preferredRecordSyntax, rc,
&addinfo, &stylesheet_name, &m_schema,
- &m_backend_type);
+ &m_backend_type, &m_backend_charset);
if (stylesheet_name)
{
m_parent->low_socket_close();
if (stylesheet_name)
{
m_parent->low_socket_close();
@@
-1719,7
+1726,7
@@
Z_APDU *Yaz_Proxy::handle_syntax_validation(Z_APDU *apdu)
pr->preferredRecordSyntax,
pr->recordComposition,
&addinfo, &stylesheet_name, &m_schema,
pr->preferredRecordSyntax,
pr->recordComposition,
&addinfo, &stylesheet_name, &m_schema,
- &m_backend_type);
+ &m_backend_type, &m_backend_charset);
if (stylesheet_name)
{
m_parent->low_socket_close();
if (stylesheet_name)
{
m_parent->low_socket_close();