X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fsrwutil.c;h=2b6e0991aae39cc5051a7127ba31a46a834320e5;hp=37d8f9e42f6ef1f64bdad3aea47e26b5410f79f2;hb=b1d7576903bc85c943182ef1bf5e35149c0673f6;hpb=799ea46466fc7433ce75d7c66d796b5a0997f59c diff --git a/src/srwutil.c b/src/srwutil.c index 37d8f9e..2b6e099 100644 --- a/src/srwutil.c +++ b/src/srwutil.c @@ -296,7 +296,9 @@ int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, *srw_pdu = (Z_SRW_PDU*) (*soap_package)->u.generic->p; yaz_srw_decodeauth(*srw_pdu, hreq, 0, 0, decode); - if ((*soap_package)->u.generic->no == 3) /* SRU 2 ! */ + /* last entry in handlers - SRU 2.0 - is turned into + offset 0.. due to other pieces relying on it */ + if ((*soap_package)->u.generic->no == 3) (*soap_package)->u.generic->no = 0; if ((*srw_pdu)->which == Z_SRW_searchRetrieve_request && (*srw_pdu)->u.request->database == 0) @@ -760,6 +762,7 @@ Z_SRW_PDU *yaz_srw_get_pdu(ODR o, int which, const char *version) sr->u.request->maximumRecords = 0; sr->u.request->recordSchema = 0; sr->u.request->recordPacking = 0; + sr->u.request->packing = 0; sr->u.request->recordXPath = 0; sr->u.request->database = 0; sr->u.request->resultSetTTL = 0; @@ -785,6 +788,7 @@ Z_SRW_PDU *yaz_srw_get_pdu(ODR o, int which, const char *version) sr->u.explain_request = (Z_SRW_explainRequest *) odr_malloc(o, sizeof(*sr->u.explain_request)); sr->u.explain_request->recordPacking = 0; + sr->u.explain_request->packing = 0; sr->u.explain_request->database = 0; sr->u.explain_request->stylesheet = 0; break; @@ -907,7 +911,7 @@ static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode, yaz_add_name_value_str(encode, name, value, &i, "x-pquery", srw_pdu->u.request->query); } - else if (!strcmp(queryType, "pqf")) + else if (!strcmp(queryType, "xcql")) { yaz_add_name_value_str(encode, name, value, &i, "x-cql", srw_pdu->u.request->query); @@ -928,8 +932,16 @@ static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode, srw_pdu->u.request->maximumRecords); yaz_add_name_value_str(encode, name, value, &i, "recordSchema", srw_pdu->u.request->recordSchema); - yaz_add_name_value_str(encode, name, value, &i, "recordPacking", - srw_pdu->u.request->recordPacking); + if (version2) + { + yaz_add_name_value_str(encode, name, value, &i, "recordXMLEscaping", + srw_pdu->u.request->recordPacking); + yaz_add_name_value_str(encode, name, value, &i, "recordPacking", + srw_pdu->u.request->packing); + } + else + yaz_add_name_value_str(encode, name, value, &i, "recordPacking", + srw_pdu->u.request->recordPacking); yaz_add_name_value_str(encode, name, value, &i, "recordXPath", srw_pdu->u.request->recordXPath); yaz_add_name_value_str(encode, name, value, &i, "stylesheet", @@ -939,6 +951,17 @@ static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode, break; case Z_SRW_explain_request: value[i++] = "explain"; + + if (version2) + { + yaz_add_name_value_str(encode, name, value, &i, "recordXMLEscaping", + srw_pdu->u.explain_request->recordPacking); + yaz_add_name_value_str(encode, name, value, &i, "recordPacking", + srw_pdu->u.explain_request->packing); + } + else + yaz_add_name_value_str(encode, name, value, &i, "recordPacking", + srw_pdu->u.explain_request->recordPacking); yaz_add_name_value_str(encode, name, value, &i, "stylesheet", srw_pdu->u.explain_request->stylesheet); break;