plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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 }