From: havoc Date: Mon, 22 Jan 2007 14:51:05 +0000 (+0000) Subject: implemented \" and \n support in quoted string parsers (console and otherwise) X-Git-Tag: xonotic-v0.1.0preview~3682 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=47b223cb169936104f3f0fbd97c5a46c467ef5fa;p=xonotic%2Fdarkplaces.git implemented \" and \n support in quoted string parsers (console and otherwise) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6726 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/common.c b/common.c index e3c95da4..dad84c89 100644 --- a/common.c +++ b/common.c @@ -673,6 +673,7 @@ Parse a token out of a string int COM_ParseToken(const char **datapointer, int returnnewline) { int len; + int c; const char *data = *datapointer; len = 0; @@ -725,15 +726,27 @@ skipwhite: // quoted string for (data++;*data != '\"';data++) { - if (*data == '\\' && data[1] == '"' ) - data++; if (!*data || len >= (int)sizeof(com_token) - 1) { com_token[0] = 0; *datapointer = NULL; return false; } - com_token[len++] = *data; + c = *data; + if (*data == '\\') + { + if (data[1] == '"') + { + data++; + c = *data; + } + else if (data[1] == 'n') + { + data++; + c = '\n'; + } + } + com_token[len++] = c; } com_token[len] = 0; *datapointer = data+1; @@ -803,6 +816,7 @@ Parse a token out of a string, behaving like the qwcl console int COM_ParseTokenConsole(const char **datapointer) { int len; + int c; const char *data = *datapointer; len = 0; @@ -844,7 +858,21 @@ skipwhite: *datapointer = NULL; return false; } - com_token[len++] = *data; + c = *data; + if (*data == '\\') + { + if (data[1] == '"') + { + data++; + c = *data; + } + else if (data[1] == 'n') + { + data++; + c = '\n'; + } + } + com_token[len++] = c; } com_token[len] = 0; *datapointer = data+1;