query.c 712 B

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