parsecommandline cleanups

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6096 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2011-02-13 15:46:01 +00:00
parent ee96cded9c
commit a2eb5b870a
+5 -10
View File
@@ -1058,17 +1058,12 @@ static char *parsecommandline(const char *src, vector<char *> &args)
while(isspace(*src)) src++;
if(!*src) break;
args.add(dst);
do
for(bool quoted = false; *src && (quoted || !isspace(*src)); src++)
{
while(*src && *src != '"' && !isspace(*src)) *dst++ = *src++;
if(*src == '"') for(;;)
{
for(++src; *src && *src != '"';) *dst++ = *src++;
if(!*src) break;
if(src[-1] != '\\') { src++; break; }
dst[-1] = '"';
}
} while(*src && *src != '"' && !isspace(*src));
if(*src != '"') *dst++ = *src;
else if(dst > buf && src[-1] == '\\') dst[-1] = '"';
else quoted = !quoted;
}
*dst++ = '\0';
}
args.add(NULL);