Skip to content

Commit 29d73f9

Browse files
committed
fix ParseArgs(again)
1 parent db4d33d commit 29d73f9

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/service.cpp

+14-20
Original file line numberDiff line numberDiff line change
@@ -338,26 +338,20 @@ void WINAPI ServiceMain(DWORD argc, LPSTR argv[])
338338

339339
void ParseArgs(std::vector<std::string>& vec, std::string str)
340340
{
341-
std::string arg, rem;
342-
std::string::size_type i = str.find_first_of(' ');
343-
344-
if(i == std::string::npos)
345-
return;
346-
347-
if(i == 0){
348-
ParseArgs(vec,str.substr(1,-1));
349-
return;
350-
}
351-
352-
if(i < str.size()){
353-
arg = str.substr(0,i);
354-
rem = str.substr(++i,str.size());
355-
vec.push_back(arg);
356-
ParseArgs(vec,rem);
357-
}else{
358-
vec.push_back(str);
359-
return ;
360-
}
341+
std::string::size_type i = str.find_first_of(' ');
342+
343+
if( str.empty() ){ /* done */
344+
return;
345+
}else if(i == std::string::npos){ /* only 1 str */
346+
vec.push_back(str);
347+
return;
348+
}else if(i == 0){ /* trim initial space(s) */
349+
ParseArgs(vec, str.substr(1,-1));
350+
return;
351+
}else{ /* atleast 2 strings */
352+
vec.push_back(str.substr(0,i));
353+
ParseArgs(vec, str.substr(i+1,str.size()));
354+
}
361355
}
362356

363357
int WINAPI WinMain(HINSTANCE hInst,

0 commit comments

Comments
 (0)