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
Update NEWS with most important changes
[yaz-moved-to-github.git]
/
src
/
srw.c
diff --git
a/src/srw.c
b/src/srw.c
index
7fb30b4
..
afba33b
100644
(file)
--- a/
src/srw.c
+++ b/
src/srw.c
@@
-2,7
+2,7
@@
* Copyright (c) 2002-2004, Index Data.
* See the file LICENSE for details.
*
* Copyright (c) 2002-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: srw.c,v 1.18 2004-01-15 23:33:29 adam Exp $
+ * $Id: srw.c,v 1.26 2004-10-02 13:28:26 adam Exp $
*/
#include <yaz/srw.h>
*/
#include <yaz/srw.h>
@@
-42,7
+42,7
@@
xmlNodePtr add_xsd_string_n(xmlNodePtr ptr, const char *elem, const char *val,
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
{
if (val)
xmlNodePtr add_xsd_string(xmlNodePtr ptr, const char *elem, const char *val)
{
if (val)
- return xmlNewChild(ptr, 0, elem, val);
+ return xmlNewTextChild(ptr, 0, elem, val);
return 0;
}
return 0;
}
@@
-52,7
+52,7
@@
static void add_xsd_integer(xmlNodePtr ptr, const char *elem, const int *val)
{
char str[30];
sprintf(str, "%d", *val);
{
char str[30];
sprintf(str, "%d", *val);
- xmlNewChild(ptr, 0, elem, str);
+ xmlNewTextChild(ptr, 0, elem, str);
}
}
}
}
@@
-113,7
+113,7
@@
static int match_xsd_XML_n(xmlNodePtr ptr, const char *elem, ODR o,
if (!match_element(ptr, elem))
return 0;
ptr = ptr->children;
if (!match_element(ptr, elem))
return 0;
ptr = ptr->children;
- while (ptr && ptr->type != XML_TEXT_NODE && ptr->type != XML_COMMENT_NODE)
+ while (ptr && (ptr->type == XML_TEXT_NODE || ptr->type == XML_COMMENT_NODE))
ptr = ptr->next;
if (!ptr)
return 0;
ptr = ptr->next;
if (!ptr)
return 0;
@@
-243,7
+243,7
@@
static int yaz_srw_records(ODR o, xmlNodePtr pptr, Z_SRW_record **recs,
}
if (!*num)
return 1;
}
if (!*num)
return 1;
- *recs = odr_malloc(o, *num * sizeof(**recs));
+ *recs = (Z_SRW_record *) odr_malloc(o, *num * sizeof(**recs));
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next)
{
if (ptr->type == XML_ELEMENT_NODE &&
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next)
{
if (ptr->type == XML_ELEMENT_NODE &&
@@
-282,11
+282,12
@@
static int yaz_srw_diagnostics(ODR o, xmlNodePtr pptr, Z_SRW_diagnostic **recs,
}
if (!*num)
return 1;
}
if (!*num)
return 1;
- *recs = odr_malloc(o, *num * sizeof(**recs));
+ *recs = (Z_SRW_diagnostic *) odr_malloc(o, *num * sizeof(**recs));
for (i = 0; i < *num; i++)
{
for (i = 0; i < *num; i++)
{
- (*recs)[i].code = 0;
+ (*recs)[i].uri = 0;
(*recs)[i].details = 0;
(*recs)[i].details = 0;
+ (*recs)[i].message = 0;
}
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next)
{
}
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next)
{
@@
-294,16
+295,20
@@
static int yaz_srw_diagnostics(ODR o, xmlNodePtr pptr, Z_SRW_diagnostic **recs,
!strcmp(ptr->name, "diagnostic"))
{
xmlNodePtr rptr;
!strcmp(ptr->name, "diagnostic"))
{
xmlNodePtr rptr;
- (*recs)[i].code = 0;
+ (*recs)[i].uri = 0;
(*recs)[i].details = 0;
(*recs)[i].details = 0;
+ (*recs)[i].message = 0;
for (rptr = ptr->children; rptr; rptr = rptr->next)
{
for (rptr = ptr->children; rptr; rptr = rptr->next)
{
- if (match_xsd_integer(rptr, "code", o,
- &(*recs)[i].code))
+ if (match_xsd_string(rptr, "uri", o,
+ &(*recs)[i].uri))
;
else if (match_xsd_string(rptr, "details", o,
&(*recs)[i].details))
;
;
else if (match_xsd_string(rptr, "details", o,
&(*recs)[i].details))
;
+ else if (match_xsd_string(rptr, "message", o,
+ &(*recs)[i].message))
+ ;
}
i++;
}
}
i++;
}
@@
-313,14
+318,19
@@
static int yaz_srw_diagnostics(ODR o, xmlNodePtr pptr, Z_SRW_diagnostic **recs,
{
int i;
xmlNsPtr ns_diag =
{
int i;
xmlNsPtr ns_diag =
- xmlNewNs(pptr, "http://www.loc.gov/zing/srw/diagnostics/", "diag");
+ xmlNewNs(pptr, "info:srw/schema/1/diagnostic-v1.1", 0);
for (i = 0; i < *num; i++)
{
for (i = 0; i < *num; i++)
{
+ const char *std_diag = "info:srw/diagnostic/1/";
xmlNodePtr rptr = xmlNewChild(pptr, ns_diag, "diagnostic", 0);
xmlNodePtr rptr = xmlNewChild(pptr, ns_diag, "diagnostic", 0);
- add_xsd_integer(rptr, "code", (*recs)[i].code);
- if ((*recs)[i].code)
+ add_xsd_string(rptr, "uri", (*recs)[i].uri);
+ if ((*recs)[i].message)
+ add_xsd_string(rptr, "message", (*recs)[i].message);
+ else if ((*recs)[i].uri &&
+ !strncmp((*recs)[i].uri, std_diag, strlen(std_diag)))
{
{
- const char *message = yaz_diag_srw_str(*(*recs)[i].code);
+ int no = atoi((*recs)[i].uri + strlen(std_diag));
+ const char *message = yaz_diag_srw_str(no);
if (message)
add_xsd_string(rptr, "message", message);
}
if (message)
add_xsd_string(rptr, "message", message);
}
@@
-377,7
+387,7
@@
static int yaz_srw_terms(ODR o, xmlNodePtr pptr, Z_SRW_scanTerm **terms,
}
if (!*num)
return 1;
}
if (!*num)
return 1;
- *terms = odr_malloc(o, *num * sizeof(**terms));
+ *terms = (Z_SRW_scanTerm *) odr_malloc(o, *num * sizeof(**terms));
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next, i++)
{
if (ptr->type == XML_ELEMENT_NODE &&
for (i = 0, ptr = pptr->children; ptr; ptr = ptr->next, i++)
{
if (ptr->type == XML_ELEMENT_NODE &&
@@
-400,7
+410,7
@@
static int yaz_srw_terms(ODR o, xmlNodePtr pptr, Z_SRW_scanTerm **terms,
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
void *client_data, const char *ns)
{
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
void *client_data, const char *ns)
{
- xmlNodePtr pptr = vptr;
+ xmlNodePtr pptr = (xmlNodePtr) vptr;
if (o->direction == ODR_DECODE)
{
Z_SRW_PDU **p = handler_data;
if (o->direction == ODR_DECODE)
{
Z_SRW_PDU **p = handler_data;
@@
-414,7
+424,7
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if (method->type != XML_ELEMENT_NODE)
return -1;
if (method->type != XML_ELEMENT_NODE)
return -1;
- *p = odr_malloc(o, sizeof(**p));
+ *p = (Z_SRW_PDU *) odr_malloc(o, sizeof(**p));
(*p)->srw_version = odr_strdup(o, "1.1");
if (!strcmp(method->name, "searchRetrieveRequest"))
(*p)->srw_version = odr_strdup(o, "1.1");
if (!strcmp(method->name, "searchRetrieveRequest"))
@@
-423,7
+433,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
Z_SRW_searchRetrieveRequest *req;
(*p)->which = Z_SRW_searchRetrieve_request;
Z_SRW_searchRetrieveRequest *req;
(*p)->which = Z_SRW_searchRetrieve_request;
- req = (*p)->u.request = odr_malloc(o, sizeof(*req));
+ req = (*p)->u.request = (Z_SRW_searchRetrieveRequest *)
+ odr_malloc(o, sizeof(*req));
req->query_type = Z_SRW_query_type_cql;
req->query.cql = 0;
req->sort_type = Z_SRW_sort_type_none;
req->query_type = Z_SRW_query_type_cql;
req->query.cql = 0;
req->sort_type = Z_SRW_sort_type_none;
@@
-487,7
+498,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
Z_SRW_searchRetrieveResponse *res;
(*p)->which = Z_SRW_searchRetrieve_response;
Z_SRW_searchRetrieveResponse *res;
(*p)->which = Z_SRW_searchRetrieve_response;
- res = (*p)->u.response = odr_malloc(o, sizeof(*res));
+ res = (*p)->u.response = (Z_SRW_searchRetrieveResponse *)
+ odr_malloc(o, sizeof(*res));
res->numberOfRecords = 0;
res->resultSetId = 0;
res->numberOfRecords = 0;
res->resultSetId = 0;
@@
-531,7
+543,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_explain_request;
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_explain_request;
- req = (*p)->u.explain_request = odr_malloc(o, sizeof(*req));
+ req = (*p)->u.explain_request = (Z_SRW_explainRequest *)
+ odr_malloc(o, sizeof(*req));
req->recordPacking = 0;
req->database = 0;
req->stylesheet = 0;
req->recordPacking = 0;
req->database = 0;
req->stylesheet = 0;
@@
-557,7
+570,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_explain_response;
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_explain_response;
- res = (*p)->u.explain_response = odr_malloc(o, sizeof(*res));
+ res = (*p)->u.explain_response = (Z_SRW_explainResponse*)
+ odr_malloc(o, sizeof(*res));
res->diagnostics = 0;
res->num_diagnostics = 0;
res->diagnostics = 0;
res->num_diagnostics = 0;
@@
-581,7
+595,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_scan_request;
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_scan_request;
- req = (*p)->u.scan_request = odr_malloc(o, sizeof(*req));
+ req = (*p)->u.scan_request = (Z_SRW_scanRequest *)
+ odr_malloc(o, sizeof(*req));
req->database = 0;
req->scanClause = 0;
req->stylesheet = 0;
req->database = 0;
req->scanClause = 0;
req->stylesheet = 0;
@@
-616,7
+631,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_scan_response;
xmlNodePtr ptr = method->children;
(*p)->which = Z_SRW_scan_response;
- res = (*p)->u.scan_response = odr_malloc(o, sizeof(*res));
+ res = (*p)->u.scan_response = (Z_SRW_scanResponse *)
+ odr_malloc(o, sizeof(*res));
res->terms = 0;
res->num_terms = 0;
res->diagnostics = 0;
res->terms = 0;
res->num_terms = 0;
res->diagnostics = 0;