/*
- * $Id: http_command.c,v 1.1 2006-12-20 20:47:16 quinn Exp $
+ * $Id: http_command.c,v 1.3 2007-01-03 06:23:44 quinn Exp $
*/
#include <stdio.h>
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, "<termlist>");
- p = termlist(s->psession, &len);
- if (p)
- for (i = 0; i < len; i++)
- {
- wrbuf_puts(c->wrbuf, "\n<term>");
- wrbuf_printf(c->wrbuf, "<name>%s</name>", p[i]->term);
- wrbuf_printf(c->wrbuf, "<frequency>%d</frequency>", p[i]->frequency);
- wrbuf_puts(c->wrbuf, "</term>");
- }
+ 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<list name=\"%s\">\n", tname);
+ if (p)
+ for (i = 0; i < len; i++)
+ {
+ wrbuf_puts(c->wrbuf, "\n<term>");
+ wrbuf_printf(c->wrbuf, "<name>%s</name>", p[i]->term);
+ wrbuf_printf(c->wrbuf, "<frequency>%d</frequency>", p[i]->frequency);
+ wrbuf_puts(c->wrbuf, "</term>");
+ }
+ wrbuf_puts(c->wrbuf, "\n</list>");
+ name = tp;
+ if (*name == ',')
+ name++;
+ }
wrbuf_puts(c->wrbuf, "</termlist>");
rs->payload = nmem_strdup(rq->channel->nmem, wrbuf_buf(c->wrbuf));
http_send_response(c);
struct http_response *rs = c->response;
struct http_session *s = locate_session(rq, rs);
struct record **rl;
+ NMEM nmem_show;
char *start = http_argbyname(rq, "start");
char *num = http_argbyname(rq, "num");
int startn = 0;
if (num)
numn = atoi(num);
- rl = show(s->psession, startn, &numn, &total, &total_hits);
+ nmem_show = nmem_create();
+ rl = show(s->psession, startn, &numn, &total, &total_hits, nmem_show);
wrbuf_rewind(c->wrbuf);
wrbuf_puts(c->wrbuf, "<show>\n<status>OK</status>\n");
wrbuf_puts(c->wrbuf, "</show>\n");
rs->payload = nmem_strdup(c->nmem, wrbuf_buf(c->wrbuf));
http_send_response(c);
+ nmem_destroy(nmem_show);
}
static void show_records_ready(void *data)