}
}
-void yaz_uri_val_int(const char *path, const char *name, ODR o, Odr_int **intp)
-{
- const char *v = yaz_uri_val(path, name, o);
- if (v)
- *intp = odr_intdup(o, atoi(v));
-}
-
void yaz_mk_srw_diagnostic(ODR o, Z_SRW_diagnostic *d,
const char *uri, const char *message,
const char *details)
while (i < 20 && charset_p[i] &&
!strchr("; \n\r", charset_p[i]))
i++;
- *charset = (char*) odr_malloc(o, i+1);
- memcpy(*charset, charset_p, i);
- (*charset)[i] = '\0';
+ *charset = odr_strdupn(o, charset_p, i);
}
}
}
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;
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] == '-')
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,
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:
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));