X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=common.c;h=50fb662ee89b226eab570de4fbd6ecac148992d2;hb=7ef262a7368c32d0e0bf7eb8bf4bbf7c79338bff;hp=035c1a6f29fa9a1049650aeace48826284899918;hpb=0855bac905297f6d915b7ffece2cc34b60f4a230;p=xonotic%2Fdarkplaces.git diff --git a/common.c b/common.c index 035c1a6f..50fb662e 100644 --- a/common.c +++ b/common.c @@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" -cvar_t registered = {0, "registered","0", "indicates if this is running registered quake (whether gfx/qpop.lmp was found)"}; +cvar_t registered = {0, "registered","0", "indicates if this is running registered quake (whether gfx/pop.lmp was found)"}; cvar_t cmdline = {0, "cmdline","0", "contains commandline the engine was launched with"}; char com_token[MAX_INPUTLINE]; @@ -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,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; @@ -744,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; @@ -785,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;