Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#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;
}