Blame


1 9df487d7 2003-11-23 devnull #include <u.h>
2 9df487d7 2003-11-23 devnull #include <libc.h>
3 9df487d7 2003-11-23 devnull #include <httpd.h>
4 9df487d7 2003-11-23 devnull
5 9df487d7 2003-11-23 devnull /*
6 9df487d7 2003-11-23 devnull * parse a search string of the form
7 9df487d7 2003-11-23 devnull * tag=val&tag1=val1...
8 9df487d7 2003-11-23 devnull */
9 9df487d7 2003-11-23 devnull HSPairs*
10 9df487d7 2003-11-23 devnull hparsequery(HConnect *c, char *search)
11 9df487d7 2003-11-23 devnull {
12 9df487d7 2003-11-23 devnull HSPairs *q;
13 9df487d7 2003-11-23 devnull char *tag, *val, *s;
14 9df487d7 2003-11-23 devnull
15 9df487d7 2003-11-23 devnull while((s = strchr(search, '?')) != nil)
16 9df487d7 2003-11-23 devnull search = s + 1;
17 9df487d7 2003-11-23 devnull s = search;
18 9df487d7 2003-11-23 devnull while((s = strchr(s, '+')) != nil)
19 9df487d7 2003-11-23 devnull *s++ = ' ';
20 9df487d7 2003-11-23 devnull q = nil;
21 9df487d7 2003-11-23 devnull while(*search){
22 9df487d7 2003-11-23 devnull tag = search;
23 9df487d7 2003-11-23 devnull while(*search != '='){
24 9df487d7 2003-11-23 devnull if(*search == '\0')
25 9df487d7 2003-11-23 devnull return q;
26 9df487d7 2003-11-23 devnull search++;
27 9df487d7 2003-11-23 devnull }
28 9df487d7 2003-11-23 devnull *search++ = 0;
29 9df487d7 2003-11-23 devnull val = search;
30 9df487d7 2003-11-23 devnull while(*search != '&'){
31 9df487d7 2003-11-23 devnull if(*search == '\0')
32 9df487d7 2003-11-23 devnull return hmkspairs(c, hurlunesc(c, tag), hurlunesc(c, val), q);
33 9df487d7 2003-11-23 devnull search++;
34 9df487d7 2003-11-23 devnull }
35 9df487d7 2003-11-23 devnull *search++ = '\0';
36 9df487d7 2003-11-23 devnull q = hmkspairs(c, hurlunesc(c, tag), hurlunesc(c, val), q);
37 9df487d7 2003-11-23 devnull }
38 9df487d7 2003-11-23 devnull return q;
39 9df487d7 2003-11-23 devnull }