X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsrwutil.c;h=83172d5df1cd57cf5ed2813434aef28176cebd9f;hb=2d59f978bb2171ecdd77d822a71379a7ca5f29c3;hp=1937a7786325c23cbce343b8e7c96eb49f14c22a;hpb=d2ed898832ae354c17254ff52c70c92278518efe;p=yaz-moved-to-github.git diff --git a/src/srwutil.c b/src/srwutil.c index 1937a77..83172d5 100644 --- a/src/srwutil.c +++ b/src/srwutil.c @@ -398,6 +398,8 @@ int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, char *maximumTerms = 0; char *responsePosition = 0; const char *facetLimit = 0; + const char *facetStart = 0; + const char *facetSort = 0; Z_SRW_extra_arg *extra_args = 0; #endif char **uri_name; @@ -471,6 +473,10 @@ int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, responsePosition = v; else if (!strcmp(n, "facetLimit")) facetLimit = v; + else if (!strcmp(n, "facetStart")) + facetStart = v; + else if (!strcmp(n, "facetSort")) + facetSort = v; else if (!strcmp(n, "extraRequestData")) ; /* ignoring extraRequestData */ else if (n[0] == 'x' && n[1] == '-') @@ -556,7 +562,7 @@ int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu, sr->u.request->packing = recordPacking; sr->u.request->stylesheet = stylesheet; yaz_sru_facet_request(decode , &sr->u.request->facetList, - &facetLimit); + &facetLimit, &facetStart, &facetSort); yaz_sru_decode_integer(decode, "maximumRecords", maximumRecords, &sr->u.request->maximumRecords, @@ -961,10 +967,16 @@ static int yaz_get_sru_parms(const Z_SRW_PDU *srw_pdu, ODR encode, srw_pdu->u.request->resultSetTTL); { const char *facetLimit = 0; + const char *facetStart = 0; + const char *facetSort = 0; yaz_sru_facet_request(encode, &srw_pdu->u.request->facetList, - &facetLimit); + &facetLimit, &facetStart, &facetSort); yaz_add_name_value_str(encode, name, value, &i, "facetLimit", (char *) facetLimit); + yaz_add_name_value_str(encode, name, value, &i, "facetStart", + (char *) facetStart); + yaz_add_name_value_str(encode, name, value, &i, "facetSort", + (char *) facetSort); } break; case Z_SRW_explain_request: @@ -1170,6 +1182,9 @@ void yaz_encode_sru_extra(Z_SRW_PDU *sr, ODR odr, const char *extra_args) Z_SRW_extra_arg **ea = &sr->extra_args; yaz_uri_to_array(extra_args, odr, &name, &val); + /** append rather than override */ + while (*ea) + ea = &(*ea)->next; while (*name) { *ea = (Z_SRW_extra_arg *) odr_malloc(odr, sizeof(**ea));