query.c (712B)
1 #include <u.h> 2 #include <libc.h> 3 #include <httpd.h> 4 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; 14 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 }