From a2eb5b870a631c45800f7e7d417995ce82aec15e Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sun, 13 Feb 2011 15:46:01 +0000 Subject: [PATCH] parsecommandline cleanups git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6096 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/main.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/source/src/main.cpp b/source/src/main.cpp index 3e940284..2a78c121 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -1058,17 +1058,12 @@ static char *parsecommandline(const char *src, vector &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);