Exemple #1
0
bool CWebserverRequest::ParseParams(string param_string)			// parse parameter string
{
string name,value,param;
string param_str;
int pos;
bool ende = false;

	if(param_string.length() <= 0)
		return false;

	param_str = param_string;
	while(!ende)
	{
		pos = param_str.find_first_of("&");
		if(pos > 0)
		{
			param = param_str.substr(0,pos);	
			param_str = param_str.substr(pos+1,param_str.length() - (pos+1));
		}
		else
		{
			param = param_str;
			ende = true;
		}
//		dprintf("param: '%s' param_str: '%s'\n",param.c_str(),param_str.c_str());
		SplitParameter(param);
	}
	return true;
};
Exemple #2
0
bool CWebserverRequest::ParseParams(std::string param_string)			// parse parameter string
{
	if(param_string.length() <= 0)
		return false;
	char *param_copy = new char[param_string.length()+1];
	memcpy(param_copy, param_string.c_str(), param_string.length()+1);

	// instead of copying and allocating strings again and again,
	// we just copy once, move pointers
	// around and set '\0' chars. is faster and less memory is used.
        char *param; // this is the param
	char *ptr1;  // points to the begin of param
        char *ptr2;  // points to the '&' sign

        ptr1 = param_copy;
        ptr2 = ptr1;
	while(ptr2 && *ptr1) {
                param  = ptr1;
		ptr2 = strchr(ptr1, '&');
		if(ptr2 != NULL)
		{
			*ptr2 = '\0';
			ptr1  = ptr2+1;
		}
		SplitParameter(param);
	}
	delete[] param_copy;
	return true;
};