X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=common.c;h=ab5fc3195cda1864e69ccb49143cf26b2e8f1b5e;hb=9e3db0fc7835fee2178c2ce677fcc98d8fda449f;hp=21c0eb6df47436251b95bc8ed284943462293cb4;hpb=62bc56e9c2d45afe69ba3f1ebb87f40d5753eeab;p=xonotic%2Fdarkplaces.git diff --git a/common.c b/common.c index 21c0eb6d..ab5fc319 100644 --- a/common.c +++ b/common.c @@ -27,11 +27,9 @@ 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"}; -extern qboolean fs_modified; // set true if using non-id files - char com_token[MAX_INPUTLINE]; int com_argc; const char **com_argv; @@ -675,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; @@ -727,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; @@ -746,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; @@ -787,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; @@ -851,6 +909,22 @@ skipwhite: com_token[len] = 0; *datapointer = data+1; } + else if (*data == '\'') + { + // quoted string + for (data++;*data != '\'';data++) + { + if (!*data || len >= (int)sizeof(com_token) - 1) + { + com_token[0] = 0; + *datapointer = NULL; + return false; + } + com_token[len++] = *data; + } + com_token[len] = 0; + *datapointer = data+1; + } else { // regular word @@ -970,6 +1044,12 @@ static const gamemode_info_t gamemode_info [] = // GAME_DEFEATINDETAIL2 // COMMANDLINEOPTION: Game: -did2 runs the game Defeat In Detail 2 { "did2", "-did2", "Defeat In Detail 2", "data", NULL, "did2_", "did2" }, +// GAME_DARSANA +// COMMANDLINEOPTION: Game: -darsana runs the game Darsana +{ "darsana", "-darsana", "Darsana", "ddata", NULL, "darsana", "darsana" }, +// GAME_CONTAGIONTHEORY +// COMMANDLINEOPTION: Game: -contagiontheory runs the game Contagion Theory +{ "contagiontheory", "-contagiontheory", "Contagion Theory", "ctdata", NULL, "ct", "contagiontheory" }, }; void COM_InitGameType (void)