Blob


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