From 47b223cb169936104f3f0fbd97c5a46c467ef5fa Mon Sep 17 00:00:00 2001 From: havoc Date: Mon, 22 Jan 2007 14:51:05 +0000 Subject: [PATCH] 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 --- common.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) 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; -- 2.39.2