From 311cc25f55add09c5f2dc0afc65d37c6a6c14361 Mon Sep 17 00:00:00 2001 From: havoc Date: Mon, 22 Jan 2007 14:53:52 +0000 Subject: [PATCH] added \' and \\ support to parsers, and added such escape code support to ' quoted strings and regular words git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6727 d7cf8633-e32d-0410-b094-e92efae38249 --- common.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 5 deletions(-) diff --git a/common.c b/common.c index dad84c89..ec3d63b8 100644 --- a/common.c +++ b/common.c @@ -740,11 +740,18 @@ skipwhite: data++; c = *data; } + else if (data[1] == '\'') + { + data++; + c = *data; + } else if (data[1] == 'n') { data++; c = '\n'; } + else if (data[1] == '\\') + data++; } com_token[len++] = c; } @@ -757,15 +764,34 @@ 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] == '\'') + { + data++; + c = *data; + } + else if (data[1] == 'n') + { + data++; + c = '\n'; + } + else if (data[1] == '\\') + data++; + } + com_token[len++] = c; } com_token[len] = 0; *datapointer = data+1; @@ -798,7 +824,28 @@ skipwhite: *datapointer = NULL; return false; } - com_token[len++] = *data; + c = *data; + if (*data == '\\') + { + if (data[1] == '"') + { + data++; + c = *data; + } + else if (data[1] == '\'') + { + data++; + c = *data; + } + else if (data[1] == 'n') + { + data++; + c = '\n'; + } + else if (data[1] == '\\') + data++; + } + com_token[len++] = c; } com_token[len] = 0; *datapointer = data; @@ -866,11 +913,18 @@ skipwhite: data++; c = *data; } + else if (data[1] == '\'') + { + data++; + c = *data; + } else if (data[1] == 'n') { data++; c = '\n'; } + else if (data[1] == '\\') + data++; } com_token[len++] = c; } @@ -888,7 +942,28 @@ skipwhite: *datapointer = NULL; return false; } - com_token[len++] = *data; + c = *data; + if (*data == '\\') + { + if (data[1] == '"') + { + data++; + c = *data; + } + else if (data[1] == '\'') + { + data++; + c = *data; + } + else if (data[1] == 'n') + { + data++; + c = '\n'; + } + else if (data[1] == '\\') + data++; + } + com_token[len++] = c; } com_token[len] = 0; *datapointer = data; -- 2.39.2