projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use odr_atoi to decode fake hit count (in term)
[yaz-moved-to-github.git]
/
src
/
srw.c
diff --git
a/src/srw.c
b/src/srw.c
index
6cd8224
..
64a868b
100644
(file)
--- a/
src/srw.c
+++ b/
src/srw.c
@@
-1,5
+1,5
@@
/* This file is part of the YAZ toolkit.
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2008 Index Data
+ * Copyright (C) 1995-2009 Index Data
* See the file LICENSE for details.
*/
/**
* See the file LICENSE for details.
*/
/**
@@
-60,12
+60,13
@@
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
return add_xsd_string_ns(ptr, elem, val, 0);
}
return add_xsd_string_ns(ptr, elem, val, 0);
}
-static void add_xsd_integer(xmlNodePtr ptr, const char *elem, const int *val)
+static void add_xsd_integer(xmlNodePtr ptr, const char *elem,
+ const Odr_int *val)
{
if (val)
{
{
if (val)
{
- char str[30];
- sprintf(str, "%d", *val);
+ char str[40];
+ sprintf(str, ODR_INT_PRINTF, *val);
xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
}
}
xmlNewTextChild(ptr, 0, BAD_CAST elem, BAD_CAST str);
}
}
@@
-164,7
+165,8
@@
static int match_xsd_XML_n(xmlNodePtr ptr, const char *elem, ODR o,
return 1;
}
return 1;
}
-static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o, int **val)
+static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o,
+ Odr_int **val)
{
#if CHECK_TYPE
struct _xmlAttr *attr;
{
#if CHECK_TYPE
struct _xmlAttr *attr;
@@
-190,7
+192,7
@@
static int match_xsd_integer(xmlNodePtr ptr, const char *elem, ODR o, int **val)
ptr = ptr->children;
if (!ptr || ptr->type != XML_TEXT_NODE)
return 0;
ptr = ptr->children;
if (!ptr || ptr->type != XML_TEXT_NODE)
return 0;
- *val = odr_intdup(o, atoi((const char *) ptr->content));
+ *val = odr_intdup(o, odr_atoi((const char *) ptr->content));
return 1;
}
return 1;
}
@@
-738,6
+740,10
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_integer(ptr, "numberOfRecords", o,
&res->numberOfRecords))
;
else if (match_xsd_integer(ptr, "numberOfRecords", o,
&res->numberOfRecords))
;
@@
-776,6
+782,10
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_string(ptr, "stylesheet", o,
&req->stylesheet))
;
else if (match_xsd_string(ptr, "stylesheet", o,
&req->stylesheet))
;
@@
-807,6
+817,10
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_element(ptr, "record"))
yaz_srw_record(o, ptr, &res->record, &res->extra_record,
client_data, ns);
else if (match_element(ptr, "record"))
yaz_srw_record(o, ptr, &res->record, &res->extra_record,
client_data, ns);
@@
-837,6
+851,10
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_xsd_string(ptr, "scanClause", o,
&req->scanClause.cql))
;
else if (match_xsd_string(ptr, "scanClause", o,
&req->scanClause.cql))
;
@@
-877,6
+895,10
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
if (match_xsd_string(ptr, "version", o,
&(*p)->srw_version))
;
+ else if (match_xsd_XML_n(ptr, "extraResponseData", o,
+ &(*p)->extraResponseData_buf,
+ &(*p)->extraResponseData_len))
+ ;
else if (match_element(ptr, "terms"))
yaz_srw_terms(o, ptr, &res->terms,
&res->num_terms, client_data,
else if (match_element(ptr, "terms"))
yaz_srw_terms(o, ptr, &res->terms,
&res->num_terms, client_data,
@@
-900,12
+922,12
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
{
Z_SRW_PDU **p = handler_data;
xmlNsPtr ns_srw;
{
Z_SRW_PDU **p = handler_data;
xmlNsPtr ns_srw;
+ xmlNodePtr ptr = 0;
if ((*p)->which == Z_SRW_searchRetrieve_request)
{
Z_SRW_searchRetrieveRequest *req = (*p)->u.request;
if ((*p)->which == Z_SRW_searchRetrieve_request)
{
Z_SRW_searchRetrieveRequest *req = (*p)->u.request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0,
- BAD_CAST "searchRetrieveRequest", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "searchRetrieveRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-946,8
+968,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_searchRetrieve_response)
{
Z_SRW_searchRetrieveResponse *res = (*p)->u.response;
else if ((*p)->which == Z_SRW_searchRetrieve_response)
{
Z_SRW_searchRetrieveResponse *res = (*p)->u.response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0,
- BAD_CAST "searchRetrieveResponse", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "searchRetrieveResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-976,8
+997,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_explain_request)
{
Z_SRW_explainRequest *req = (*p)->u.explain_request;
else if ((*p)->which == Z_SRW_explain_request)
{
Z_SRW_explainRequest *req = (*p)->u.explain_request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "explainRequest",
- 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "explainRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-989,8
+1009,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_explain_response)
{
Z_SRW_explainResponse *res = (*p)->u.explain_response;
else if ((*p)->which == Z_SRW_explain_response)
{
Z_SRW_explainResponse *res = (*p)->u.explain_response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "explainResponse",
- 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "explainResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-1012,7
+1031,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_scan_request)
{
Z_SRW_scanRequest *req = (*p)->u.scan_request;
else if ((*p)->which == Z_SRW_scan_request)
{
Z_SRW_scanRequest *req = (*p)->u.scan_request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "scanRequest", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "scanRequest", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-1034,7
+1053,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_scan_response)
{
Z_SRW_scanResponse *res = (*p)->u.scan_response;
else if ((*p)->which == Z_SRW_scan_response)
{
Z_SRW_scanResponse *res = (*p)->u.scan_response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "scanResponse", 0);
+ ptr = xmlNewChild(pptr, 0, BAD_CAST "scanResponse", 0);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
xmlSetNs(ptr, ns_srw);
@@
-1056,6
+1075,11
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
}
else
return -1;
}
else
return -1;
+ if (ptr && (*p)->extraResponseData_len)
+ add_XML_n(ptr, "extraResponseData",
+ (*p)->extraResponseData_buf,
+ (*p)->extraResponseData_len, ns_srw);
+
}
return 0;
}
return 0;
@@
-1286,6
+1310,7
@@
int yaz_ucp_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
/*
* Local variables:
* c-basic-offset: 4
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab