-/* $Id: pazpar2.c,v 1.50 2007-03-20 05:32:58 quinn Exp $ */
+/* $Id: pazpar2.c,v 1.52 2007-03-23 03:26:22 quinn Exp $ */
#include <stdlib.h>
#include <stdio.h>
return res;
}
-// parses crit1=val1,crit2=val2,...
+// parses crit1=val1,crit2=val2|val3,...
static struct database_criterion *parse_filter(NMEM m, const char *buf)
{
struct database_criterion *res = 0;
nmem_strsplit(m, ",", buf, &values, &num);
for (i = 0; i < num; i++)
{
+ char **subvalues;
+ int subnum;
+ int subi;
struct database_criterion *new = nmem_malloc(m, sizeof(*new));
char *eq = strchr(values[i], '=');
if (!eq)
}
*(eq++) = '\0';
new->name = values[i];
- new->value = eq;
+ nmem_strsplit(m, "|", eq, &subvalues, &subnum);
+ new->values = 0;
+ for (subi = 0; subi < subnum; subi++)
+ {
+ struct database_criterion_value *newv = nmem_malloc(m, sizeof(*newv));
+ newv->value = subvalues[subi];
+ newv->next = new->values;
+ new->values = newv;
+ }
new->next = res;
res = new;
}
while (s->clients)
client_destroy(s->clients);
nmem_destroy(s->nmem);
- wrbuf_free(s->wrbuf, 1);
+ wrbuf_destroy(s->wrbuf);
}
struct session *new_session()