#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;
-char com_cmdline[MAX_INPUTLINE];
-
gamemode_t gamemode;
const char *gamename;
const char *gamedirname1;
void MSG_WriteString (sizebuf_t *sb, const char *s)
{
- if (!s)
- SZ_Write (sb, (unsigned char *)"", 1);
+ if (!s || !*s)
+ MSG_WriteChar (sb, 0);
else
SZ_Write (sb, (unsigned char *)s, (int)strlen(s)+1);
}
void MSG_WriteUnterminatedString (sizebuf_t *sb, const char *s)
{
- if (s)
+ if (s && *s)
SZ_Write (sb, (unsigned char *)s, (int)strlen(s));
}
{
if (j < n)
{
- if (d[j] >= ' ' && d[j] <= 127)
+ // color change prefix character has to be treated specially
+ if (d[j] == STRING_COLOR_TAG)
+ {
+ *cur++ = STRING_COLOR_TAG;
+ *cur++ = STRING_COLOR_TAG;
+ }
+ else if (d[j] >= ' ')
*cur++ = d[j];
else
*cur++ = '.';
int COM_ParseToken(const char **datapointer, int returnnewline)
{
int len;
+ int c;
const char *data = *datapointer;
len = 0;
// 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;
// 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;
*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;
return 0;
}
-/*
-================
-COM_CheckRegistered
-
-Looks for the pop.txt file and verifies it.
-Sets the "registered" cvar.
-Immediately exits out if an alternate game was attempted to be started without
-being registered.
-================
-*/
-void COM_CheckRegistered (void)
-{
- Cvar_Set ("cmdline", com_cmdline);
-
- if (gamemode == GAME_NORMAL && !FS_FileExists("gfx/pop.lmp"))
- {
- if (fs_modified)
- Con_Print("Playing shareware version, with modification.\nwarning: most mods require full quake data.\n");
- else
- Con_Print("Playing shareware version.\n");
- return;
- }
-
- Cvar_Set ("registered", "1");
- Con_Print("Playing registered version.\n");
-}
-
-
-/*
-================
-COM_InitArgv
-================
-*/
-void COM_InitArgv (void)
-{
- int i, j, n;
- // reconstitute the command line for the cmdline externally visible cvar
- n = 0;
- for (j = 0;(j < MAX_NUM_ARGVS) && (j < com_argc);j++)
- {
- i = 0;
- if (strstr(com_argv[j], " "))
- {
- // arg contains whitespace, store quotes around it
- com_cmdline[n++] = '\"';
- while ((n < ((int)sizeof(com_cmdline) - 1)) && com_argv[j][i])
- com_cmdline[n++] = com_argv[j][i++];
- com_cmdline[n++] = '\"';
- }
- else
- {
- while ((n < ((int)sizeof(com_cmdline) - 1)) && com_argv[j][i])
- com_cmdline[n++] = com_argv[j][i++];
- }
- if (n < ((int)sizeof(com_cmdline) - 1))
- com_cmdline[n++] = ' ';
- else
- break;
- }
- com_cmdline[n] = 0;
-}
-
-
//===========================================================================
// Game mods
// 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)
*/
void COM_Init_Commands (void)
{
+ int i, j, n;
+ char com_cmdline[MAX_INPUTLINE];
+
Cvar_RegisterVariable (®istered);
Cvar_RegisterVariable (&cmdline);
+
+ // reconstitute the command line for the cmdline externally visible cvar
+ n = 0;
+ for (j = 0;(j < MAX_NUM_ARGVS) && (j < com_argc);j++)
+ {
+ i = 0;
+ if (strstr(com_argv[j], " "))
+ {
+ // arg contains whitespace, store quotes around it
+ com_cmdline[n++] = '\"';
+ while ((n < ((int)sizeof(com_cmdline) - 1)) && com_argv[j][i])
+ com_cmdline[n++] = com_argv[j][i++];
+ com_cmdline[n++] = '\"';
+ }
+ else
+ {
+ while ((n < ((int)sizeof(com_cmdline) - 1)) && com_argv[j][i])
+ com_cmdline[n++] = com_argv[j][i++];
+ }
+ if (n < ((int)sizeof(com_cmdline) - 1))
+ com_cmdline[n++] = ' ';
+ else
+ break;
+ }
+ com_cmdline[n] = 0;
+ Cvar_Set ("cmdline", com_cmdline);
}
/*
for (pos2++;buffer[pos2] && buffer[pos2] != '\\';pos2++);
for (pos2++;buffer[pos2] && buffer[pos2] != '\\';pos2++);
}
- if (bufferlength <= 1 + strlen(key) + 1 + strlen(value) + strlen(buffer + pos2))
+ if (bufferlength <= pos + 1 + strlen(key) + 1 + strlen(value) + strlen(buffer + pos2))
{
Con_Printf("InfoString_SetValue: no room for \"%s\" \"%s\" in infostring\n", key, value);
return;
else
{
// just remove the key from the text
- strcpy(buffer + pos, buffer + pos2);
+ strlcpy(buffer + pos, buffer + pos2, bufferlength - pos);
}
}