X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fhttp_command.c;h=54a16549f8703e47ac0d7052531f629282d70471;hb=dde4a5914bbb5511a91e73d8ab45210b48637596;hp=e453a9da2327c65f1a91e3ce63ff1c2d55ab9ced;hpb=31b16970388c81753afd73748f339c011384503d;p=pazpar2-moved-to-github.git diff --git a/src/http_command.c b/src/http_command.c index e453a9d..54a1654 100644 --- a/src/http_command.c +++ b/src/http_command.c @@ -1,5 +1,5 @@ /* - * $Id: http_command.c,v 1.2 2006-12-20 22:19:35 adam Exp $ + * $Id: http_command.c,v 1.3 2007-01-03 06:23:44 quinn Exp $ */ #include @@ -152,21 +152,44 @@ static void cmd_termlist(struct http_channel *c) struct termlist_score **p; int len; int i; + char *name = http_argbyname(rq, "name"); if (!s) return; + + if (!name) + name = "subject"; + if (strlen(name) > 255) + return; + wrbuf_rewind(c->wrbuf); wrbuf_puts(c->wrbuf, ""); - p = termlist(s->psession, &len); - if (p) - for (i = 0; i < len; i++) - { - wrbuf_puts(c->wrbuf, "\n"); - wrbuf_printf(c->wrbuf, "%s", p[i]->term); - wrbuf_printf(c->wrbuf, "%d", p[i]->frequency); - wrbuf_puts(c->wrbuf, ""); - } + while (*name) + { + char tname[256]; + char *tp; + + if (!(tp = strchr(name, ','))) + tp = name + strlen(name); + strncpy(tname, name, tp - name); + tname[tp - name] = '\0'; + + p = termlist(s->psession, tname, &len); + wrbuf_printf(c->wrbuf, "\n\n", tname); + if (p) + for (i = 0; i < len; i++) + { + wrbuf_puts(c->wrbuf, "\n"); + wrbuf_printf(c->wrbuf, "%s", p[i]->term); + wrbuf_printf(c->wrbuf, "%d", p[i]->frequency); + wrbuf_puts(c->wrbuf, ""); + } + wrbuf_puts(c->wrbuf, "\n"); + name = tp; + if (*name == ',') + name++; + } wrbuf_puts(c->wrbuf, ""); rs->payload = nmem_strdup(rq->channel->nmem, wrbuf_buf(c->wrbuf)); http_send_response(c);