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
const correctness of z_HTTP_header_lookup first argument 'headers'
[yaz-moved-to-github.git]
/
src
/
srw.c
diff --git
a/src/srw.c
b/src/srw.c
index
68d2056
..
0618cbd
100644
(file)
--- a/
src/srw.c
+++ b/
src/srw.c
@@
-1,8
+1,8
@@
/*
/*
- * Copyright (C) 1995-2005, Index Data ApS
+ * Copyright (C) 1995-2006, Index Data ApS
* See the file LICENSE for details.
*
* See the file LICENSE for details.
*
- * $Id: srw.c,v 1.39 2005-11-11 22:06:46 adam Exp $
+ * $Id: srw.c,v 1.48 2006-08-18 06:30:05 adam Exp $
*/
/**
* \file srw.c
*/
/**
* \file srw.c
@@
-10,7
+10,7
@@
*/
#include <yaz/srw.h>
*/
#include <yaz/srw.h>
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
@@
-291,8
+291,6
@@
static int yaz_srw_record(ODR o, xmlNodePtr pptr, Z_SRW_record *rec,
match_xsd_string_n(data_ptr, "recordData", o,
&rec->recordData_buf, &rec->recordData_len);
break;
match_xsd_string_n(data_ptr, "recordData", o,
&rec->recordData_buf, &rec->recordData_len);
break;
- default:
- /* need some way to signal diagnostic here */
}
}
rec->recordPacking = pack;
}
}
rec->recordPacking = pack;
@@
-323,7
+321,7
@@
static int yaz_srw_record(ODR o, xmlNodePtr pptr, Z_SRW_record *rec,
}
if (rec->recordPosition)
add_xsd_integer(ptr, "recordPosition", rec->recordPosition );
}
if (rec->recordPosition)
add_xsd_integer(ptr, "recordPosition", rec->recordPosition );
- if (*extra)
+ if (extra && *extra)
{
xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "extraRecordData",
0);
{
xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "extraRecordData",
0);
@@
-369,7
+367,8
@@
static int yaz_srw_records(ODR o, xmlNodePtr pptr, Z_SRW_record **recs,
{
xmlNodePtr rptr = xmlNewChild(pptr, 0, BAD_CAST "record",
0);
{
xmlNodePtr rptr = xmlNewChild(pptr, 0, BAD_CAST "record",
0);
- yaz_srw_record(o, rptr, (*recs)+i, *extra + i, client_data, ns);
+ yaz_srw_record(o, rptr, (*recs)+i, (*extra ? *extra + i : 0),
+ client_data, ns);
}
}
return 0;
}
}
return 0;
@@
-540,8
+539,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 = (Z_SRW_PDU *) odr_malloc(o, sizeof(**p));
- (*p)->srw_version = odr_strdup(o, "1.1");
+ *p = yaz_srw_get_core_v_1_1(o);
if (!xmlStrcmp(method->name, BAD_CAST "searchRetrieveRequest"))
{
if (!xmlStrcmp(method->name, BAD_CAST "searchRetrieveRequest"))
{
@@
-593,8
+591,8
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if (match_xsd_string(ptr, "recordXPath", o,
&req->recordXPath))
;
else if (match_xsd_string(ptr, "recordXPath", o,
&req->recordXPath))
;
- else if (match_xsd_string(ptr, "resultSetTTL", o,
- &req->database))
+ else if (match_xsd_integer(ptr, "resultSetTTL", o,
+ &req->resultSetTTL))
;
else if (match_xsd_string(ptr, "sortKeys", o,
&req->sort.sortKeys))
;
else if (match_xsd_string(ptr, "sortKeys", o,
&req->sort.sortKeys))
@@
-605,7
+603,6
@@
int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if (match_xsd_string(ptr, "database", o,
&req->database))
;
else if (match_xsd_string(ptr, "database", o,
&req->database))
;
- /* missing is xQuery, xSortKeys .. */
}
}
else if (!xmlStrcmp(method->name, BAD_CAST "searchRetrieveResponse"))
}
}
else if (!xmlStrcmp(method->name, BAD_CAST "searchRetrieveResponse"))
@@
-968,8
+965,7
@@
int yaz_ucp_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 = (Z_SRW_PDU *) odr_malloc(o, sizeof(**p));
- (*p)->srw_version = odr_strdup(o, "1.1");
+ *p = yaz_srw_get_core_v_1_1(o);
if (!xmlStrcmp(method->name, BAD_CAST "updateRequest"))
{
if (!xmlStrcmp(method->name, BAD_CAST "updateRequest"))
{
@@
-1091,8
+1087,8
@@
int yaz_ucp_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
if ((*p)->which == Z_SRW_update_request)
{
Z_SRW_updateRequest *req = (*p)->u.update_request;
if ((*p)->which == Z_SRW_update_request)
{
Z_SRW_updateRequest *req = (*p)->u.update_request;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, "updateRequest", 0);
- ns_srw = xmlNewNs(ptr, ns, "zu");
+ xmlNodePtr ptr = xmlNewChild(pptr, 0, BAD_CAST "updateRequest", 0);
+ ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zu");
xmlSetNs(ptr, ns_srw);
add_xsd_string(ptr, "version", (*p)->srw_version);
xmlSetNs(ptr, ns_srw);
add_xsd_string(ptr, "version", (*p)->srw_version);
@@
-1102,8
+1098,9
@@
int yaz_ucp_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
else if ((*p)->which == Z_SRW_update_response)
{
Z_SRW_updateResponse *res = (*p)->u.update_response;
else if ((*p)->which == Z_SRW_update_response)
{
Z_SRW_updateResponse *res = (*p)->u.update_response;
- xmlNodePtr ptr = xmlNewChild(pptr, 0, "updateResponse", 0);
- ns_srw = xmlNewNs(ptr, ns, "zu");
+ xmlNodePtr ptr = xmlNewChild(pptr, 0, (xmlChar *)
+ "updateResponse", 0);
+ ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zu");
xmlSetNs(ptr, ns_srw);
add_xsd_string(ptr, "version", (*p)->srw_version);
xmlSetNs(ptr, ns_srw);
add_xsd_string(ptr, "version", (*p)->srw_version);
@@
-1115,13
+1112,13
@@
int yaz_ucp_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
add_xsd_string(ptr, "recordChecksum", res->recordChecksum );
if (res->record.recordData_len)
{
add_xsd_string(ptr, "recordChecksum", res->recordChecksum );
if (res->record.recordData_len)
{
- xmlNodePtr rptr = xmlNewChild(ptr, 0, "record", 0);
+ xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "record", 0);
yaz_srw_record(o, rptr, &res->record, &res->extra_record,
client_data, ns);
}
if (res->num_diagnostics)
{
yaz_srw_record(o, rptr, &res->record, &res->extra_record,
client_data, ns);
}
if (res->num_diagnostics)
{
- xmlNodePtr rptr = xmlNewChild(ptr, 0, "diagnostics", 0);
+ xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "diagnostics", 0);
yaz_srw_diagnostics(o, rptr, &res->diagnostics,
&res->num_diagnostics, client_data, ns);
}
yaz_srw_diagnostics(o, rptr, &res->diagnostics,
&res->num_diagnostics, client_data, ns);
}