|  | #include <u.h> | 
|  | #include <libc.h> | 
|  | #include <httpd.h> | 
|  |  | 
|  | /* | 
|  | * parse a search string of the form | 
|  | * tag=val&tag1=val1... | 
|  | */ | 
|  | HSPairs* | 
|  | hparsequery(HConnect *c, char *search) | 
|  | { | 
|  | HSPairs *q; | 
|  | char *tag, *val, *s; | 
|  |  | 
|  | while((s = strchr(search, '?')) != nil) | 
|  | search = s + 1; | 
|  | s = search; | 
|  | while((s = strchr(s, '+')) != nil) | 
|  | *s++ = ' '; | 
|  | q = nil; | 
|  | while(*search){ | 
|  | tag = search; | 
|  | while(*search != '='){ | 
|  | if(*search == '\0') | 
|  | return q; | 
|  | search++; | 
|  | } | 
|  | *search++ = 0; | 
|  | val = search; | 
|  | while(*search != '&'){ | 
|  | if(*search == '\0') | 
|  | return hmkspairs(c, hurlunesc(c, tag), hurlunesc(c, val), q); | 
|  | search++; | 
|  | } | 
|  | *search++ = '\0'; | 
|  | q = hmkspairs(c, hurlunesc(c, tag), hurlunesc(c, val), q); | 
|  | } | 
|  | return q; | 
|  | } |