解析CGI字符串:
NET=0&SSID=linux&KEY=&WIP1=192&WIP2=168&WIP3=144&WIP4=010&MASK1=255&MASK2=255&MASK3=255&MASK4=000&GW1=192&GW2=168&GW3=001&GW4=001&DNS1=202&DNS2=114&DNS3=134&DNS4=133&WMAC0=00&WMAC1=DF&WMAC2=24&WMAC3=6C&WMAC4=74&WMAC5=96&OK=%B1%A3%B4%E6
static int extract_uri_parameters(struct http_request *hs, char *params)
{
char *pair = NULL;
char *equals = NULL;
int loop;
/* If we have no parameters at all, return immediately. */
if(!params || (params[0] == '\0')) {
return(0);
}
if (hs->postfile) {
loop = 1;
hs->param_vals[0] = params;
}
else {
/* Get a pointer to our first parameter */
pair = params;
for(loop = 0; (loop < MAX_CGI_PARAMETERS) && pair; loop++) {
/* Save the name of the parameter */
hs->params[loop] = pair;
/* Remember the start of this name=value pair */
equals = pair;
pair = strchr(pair, '&');
if(pair) {
*pair = '\0';
pair++;
}
equals = strchr(equals, '=');
if(equals) {
*equals = '\0';
hs->param_vals[loop] = equals + 1;
} else {
hs->param_vals[loop] = NULL;
}
//DEBUGP("CGI para %d: %s = %s\n", loop, hs->params[loop], hs->param_vals[loop]);
}
}
return(loop);
}