From: Adam Dickmeiss Date: Tue, 12 Feb 2013 11:23:05 +0000 (+0100) Subject: EXTRA_ARGS passed to search+scan X-Git-Tag: v1.17~7 X-Git-Url: http://git.indexdata.com/?p=simpleserver-moved-to-github.git;a=commitdiff_plain;h=1396c6a447490a2e182940ac39a5eabfc2bf45e6;ds=sidebyside EXTRA_ARGS passed to search+scan --- diff --git a/SimpleServer.xs b/SimpleServer.xs index f7bff31..8b03c55 100644 --- a/SimpleServer.xs +++ b/SimpleServer.xs @@ -885,6 +885,18 @@ static void f_SV_to_FacetList(SV *sv, Z_OtherInformation **oip, ODR odr) } } +static HV *parse_extra_args(Z_SRW_extra_arg *args) +{ + HV *href = newHV(); + + for (; args; args = args->next) + { + hv_store(href, args->name, strlen(args->name), + newSVpv(args->value, 0), 0); + } + return href; +} + int bend_search(void *handle, bend_search_rr *rr) { HV *href; @@ -918,6 +930,7 @@ int bend_search(void *handle, bend_search_rr *rr) } #endif href = newHV(); + hv_store(href, "SETNAME", 7, newSVpv(rr->setname, 0), 0); if (rr->srw_sortKeys && *rr->srw_sortKeys) hv_store(href, "SRW_SORTKEYS", 12, newSVpv(rr->srw_sortKeys, 0), 0); @@ -930,6 +943,8 @@ int bend_search(void *handle, bend_search_rr *rr) hv_store(href, "HANDLE", 6, zhandle->handle, 0); hv_store(href, "PID", 3, newSViv(getpid()), 0); hv_store(href, "PRESENT_NUMBER", 14, newSViv(rr->present_number), 0); + hv_store(href, "EXTRA_ARGS", 10, + newRV( (SV*) parse_extra_args(rr->extra_args)), 0); if ((rpnSV = zquery2perl(rr->query)) != 0) { hv_store(href, "RPN", 3, rpnSV, 0); } @@ -1459,6 +1474,8 @@ int bend_scan(void *handle, bend_scan_rr *rr) hv_store(href, "HANDLE", 6, zhandle->handle, 0); hv_store(href, "STATUS", 6, newSViv(BEND_SCAN_SUCCESS), 0); hv_store(href, "ENTRIES", 7, newRV((SV *) list), 0); + hv_store(href, "EXTRA_ARGS", 10, + newRV( (SV*) parse_extra_args(rr->extra_args)), 0); aref = newAV(); basenames = rr->basenames; for (i = 0; i < rr->num_bases; i++)