X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fhttp_command.c;h=752c3295452bb3baf26c282933789dd3235a90a3;hb=e21851ef5461875e3929605afe79f23be86c2404;hp=7cbcda6535be81bf3290c3d414711a40561ff019;hpb=5c017d34db6ea43ee6a95b8c462b9b824c26fbb8;p=pazpar2-moved-to-github.git diff --git a/src/http_command.c b/src/http_command.c index 7cbcda6..752c329 100644 --- a/src/http_command.c +++ b/src/http_command.c @@ -472,6 +472,7 @@ static void cmd_bytarget(struct http_channel *c) struct http_request *rq = c->request; struct http_session *s = locate_session(rq, rs); struct hitsbytarget *ht; + const char *settings = http_argbyname(rq, "settings"); int count, i; if (!s) @@ -502,8 +503,14 @@ static void cmd_bytarget(struct http_channel *c) wrbuf_puts(c->wrbuf, ""); wrbuf_xmlputs(c->wrbuf, ht[i].state); wrbuf_puts(c->wrbuf, "\n"); - + if (settings && *settings == '1') + { + wrbuf_puts(c->wrbuf, "\n"); + wrbuf_puts(c->wrbuf, wrbuf_cstr(ht[i].settings_xml)); + wrbuf_puts(c->wrbuf, "\n"); + } wrbuf_puts(c->wrbuf, ""); + wrbuf_destroy(ht[i].settings_xml); } wrbuf_puts(c->wrbuf, ""); @@ -524,8 +531,16 @@ static void write_metadata(WRBUF w, struct conf_service *service, continue; for (md = ml[imeta]; md; md = md->next) { - wrbuf_printf(w, "\n", cmd->name); + struct record_metadata_attr *attr = md->attributes; + wrbuf_printf(w, "\nname); + for (; attr; attr = attr->next) + { + wrbuf_printf(w, " %s=\"", attr->name); + wrbuf_xmlputs(w, attr->value); + wrbuf_puts(w, "\""); + } + wrbuf_puts(w, ">"); switch (cmd->type) { case Metadata_type_generic: @@ -871,6 +886,7 @@ static void cmd_search(struct http_channel *c) const char *query = http_argbyname(rq, "query"); const char *filter = http_argbyname(rq, "filter"); const char *maxrecs = http_argbyname(rq, "maxrecs"); + const char *startrecs = http_argbyname(rq, "startrecs"); enum pazpar2_error_code code; const char *addinfo = 0; @@ -886,7 +902,7 @@ static void cmd_search(struct http_channel *c) error(rs, PAZPAR2_MALFORMED_PARAMETER_ENCODING, "query"); return; } - code = search(s->psession, query, maxrecs, filter, &addinfo); + code = search(s->psession, query, startrecs, maxrecs, filter, &addinfo); if (code) { error(rs, code, addinfo);