#include "quakedef.h"
-#define NUM_SAFE_ARGVS 7
-
-static char *largv[MAX_NUM_ARGVS + NUM_SAFE_ARGVS + 1];
-static char *argvdummy = " ";
-
-static char *safeargvs[NUM_SAFE_ARGVS] =
- {"-stdvid", "-nolan", "-nosound", "-nocdaudio", "-nojoy", "-nomouse", "-window"};
-
cvar_t registered = {0, "registered","0"};
cvar_t cmdline = {0, "cmdline","0"};
void COM_InitFilesystem (void);
char com_token[1024];
+char com_basedir[MAX_OSPATH];
int com_argc;
char **com_argv;
int gamemode;
char *gamename;
+char *gamedirname;
/*
if (buf->cursize + length > buf->maxsize)
{
if (!buf->allowoverflow)
- Host_Error ("SZ_GetSpace: overflow without allowoverflow set");
+ Host_Error ("SZ_GetSpace: overflow without allowoverflow set\n");
if (length > buf->maxsize)
- Host_Error ("SZ_GetSpace: %i is > full buffer size", length);
+ Host_Error ("SZ_GetSpace: %i is > full buffer size\n", length);
buf->overflowed = true;
- Con_Printf ("SZ_GetSpace: overflow");
+ Con_Printf ("SZ_GetSpace: overflow\n");
SZ_Clear (buf);
}
void SZ_Print (sizebuf_t *buf, char *data)
{
int len;
-
+
len = strlen(data)+1;
// byte * cast to keep VC++ happy
memcpy ((qbyte *)SZ_GetSpace(buf, len-1)-1,data,len); // write over trailing 0
}
+static char *hexchar = "0123456789ABCDEF";
+void SZ_HexDumpToConsole(sizebuf_t *buf)
+{
+ int i;
+ char text[1024];
+ char *cur, *flushpointer;
+ cur = text;
+ flushpointer = text + 512;
+ for (i = 0;i < buf->cursize;i++)
+ {
+ if ((i & 15) == 0)
+ {
+ *cur++ = hexchar[(i >> 12) & 15];
+ *cur++ = hexchar[(i >> 8) & 15];
+ *cur++ = hexchar[(i >> 4) & 15];
+ *cur++ = hexchar[(i >> 0) & 15];
+ *cur++ = ':';
+ *cur++ = ' ';
+ }
+ else if ((i & 15) == 15)
+ *cur++ = '\n';
+ else
+ *cur++ = ' ';
+ if (i & 1)
+ {
+ *cur++ = hexchar[(buf->data[i] >> 4) & 15] | 0x80;
+ *cur++ = hexchar[(buf->data[i] >> 0) & 15] | 0x80;
+ }
+ else
+ {
+ *cur++ = hexchar[(buf->data[i] >> 4) & 15];
+ *cur++ = hexchar[(buf->data[i] >> 0) & 15];
+ }
+ if (cur >= flushpointer)
+ {
+ *cur++ = 0;
+ Con_Printf("%s", text);
+ cur = text;
+ }
+ }
+ if ((i & 15) != 0)
+ *cur++ = '\n';
+ if (cur > text)
+ {
+ *cur++ = 0;
+ Con_Printf("%s", text);
+ }
+}
+
//============================================================================
}
if (last)
*last = 0;
+ else
+ *out = 0;
}
/*
return NULL; // end of file;
data++;
}
-
+
// skip // comments
if (c=='/' && data[1] == '/')
{
COM_InitArgv
================
*/
-void COM_InitArgv (int argc, char **argv)
+void COM_InitArgv (void)
{
- qboolean safe;
- int i, j, n;
-
-// reconstitute the command line for the cmdline externally visible cvar
+ int i, j, n;
+ // reconstitute the command line for the cmdline externally visible cvar
n = 0;
-
- for (j=0 ; (j<MAX_NUM_ARGVS) && (j< argc) ; j++)
+ for (j = 0;(j < MAX_NUM_ARGVS) && (j < com_argc);j++)
{
i = 0;
-
- while ((n < (CMDLINE_LENGTH - 1)) && argv[j][i])
- {
- com_cmdline[n++] = argv[j][i++];
- }
-
+ while ((n < (CMDLINE_LENGTH - 1)) && com_argv[j][i])
+ com_cmdline[n++] = com_argv[j][i++];
if (n < (CMDLINE_LENGTH - 1))
com_cmdline[n++] = ' ';
else
break;
}
-
com_cmdline[n] = 0;
+}
- safe = false;
-
- for (com_argc=0 ; (com_argc<MAX_NUM_ARGVS) && (com_argc < argc) ;
- com_argc++)
- {
- largv[com_argc] = argv[com_argc];
- if (!strcmp ("-safe", argv[com_argc]))
- safe = true;
- }
+void COM_InitGameType (void)
+{
+ char name[MAX_OSPATH];
+ COM_StripExtension(com_argv[0], name);
+ COM_ToLowerString(name, name);
- if (safe)
- {
- // force all the safe-mode switches. Note that we reserved extra space in
- // case we need to add these, so we don't need an overflow check
- for (i=0 ; i<NUM_SAFE_ARGVS ; i++)
- {
- largv[com_argc] = safeargvs[i];
- com_argc++;
- }
- }
+ if (strstr(name, "transfusion"))
+ gamemode = GAME_TRANSFUSION;
+ else if (strstr(name, "nehahra"))
+ gamemode = GAME_NEHAHRA;
+ else if (strstr(name, "hipnotic"))
+ gamemode = GAME_HIPNOTIC;
+ else if (strstr(name, "rogue"))
+ gamemode = GAME_ROGUE;
+ else
+ gamemode = GAME_NORMAL;
- largv[com_argc] = argvdummy;
- com_argv = largv;
-
-#if TRANSFUSION
- gamemode = GAME_TRANSFUSION;
-#elif ZYMOTIC
- gamemode = GAME_ZYMOTIC;
-#elif FIENDARENA
- gamemode = GAME_FIENDARENA;
-#elif NEHAHRA
- gamemode = GAME_NEHAHRA;
-#else
if (COM_CheckParm ("-transfusion"))
gamemode = GAME_TRANSFUSION;
- else if (COM_CheckParm ("-zymotic"))
- gamemode = GAME_ZYMOTIC;
- else if (COM_CheckParm ("-fiendarena"))
- gamemode = GAME_FIENDARENA;
else if (COM_CheckParm ("-nehahra"))
gamemode = GAME_NEHAHRA;
else if (COM_CheckParm ("-hipnotic"))
gamemode = GAME_HIPNOTIC;
else if (COM_CheckParm ("-rogue"))
gamemode = GAME_ROGUE;
-#endif
+ else if (COM_CheckParm ("-quake"))
+ gamemode = GAME_NORMAL;
+
switch(gamemode)
{
case GAME_NORMAL:
- gamename = "DarkPlaces";
+ gamename = "DarkPlaces-Quake";
+ gamedirname = "";
break;
case GAME_HIPNOTIC:
gamename = "Darkplaces-Hipnotic";
+ gamedirname = "hipnotic";
break;
case GAME_ROGUE:
gamename = "Darkplaces-Rogue";
+ gamedirname = "rogue";
break;
case GAME_NEHAHRA:
gamename = "DarkPlaces-Nehahra";
- break;
- case GAME_FIENDARENA:
- gamename = "FiendArena";
- break;
- case GAME_ZYMOTIC:
- gamename = "Zymotic";
+ gamedirname = "nehahra";
break;
case GAME_TRANSFUSION:
gamename = "Transfusion";
+ gamedirname = "transfusion";
break;
default:
- Sys_Error("COM_InitArgv: unknown gamemode %i\n", gamemode);
+ Sys_Error("COM_InitGameType: unknown gamemode %i\n", gamemode);
break;
}
}
#endif
cachetime = Sys_FileTime (cachepath);
-
+
if (cachetime < findtime)
COM_CopyFile (netpath, cachepath);
strcpy (netpath, cachepath);
*/
void COM_InitFilesystem (void)
{
- int i, j;
- char basedir[MAX_OSPATH];
- searchpath_t *search;
+ int i;
+ searchpath_t *search;
-//
-// -basedir <path>
-// Overrides the system supplied base directory (under GAMENAME)
-//
+ strcpy(com_basedir, ".");
+
+ // -basedir <path>
+ // Overrides the system supplied base directory (under GAMENAME)
i = COM_CheckParm ("-basedir");
if (i && i < com_argc-1)
- strcpy (basedir, com_argv[i+1]);
- else
- strcpy (basedir, host_parms.basedir);
-
- j = strlen (basedir);
-
- if (j > 0)
- {
- if ((basedir[j-1] == '\\') || (basedir[j-1] == '/'))
- basedir[j-1] = 0;
- }
+ strcpy (com_basedir, com_argv[i+1]);
-#if CACHEENABLE
-//
-// -cachedir <path>
-// Overrides the system supplied cache directory (NULL or /qcache)
-// -cachedir - will disable caching.
-//
- i = COM_CheckParm ("-cachedir");
- if (i && i < com_argc-1)
- {
- if (com_argv[i+1][0] == '-')
- com_cachedir[0] = 0;
- else
- strcpy (com_cachedir, com_argv[i+1]);
- }
- else if (host_parms.cachedir)
- strcpy (com_cachedir, host_parms.cachedir);
- else
- com_cachedir[0] = 0;
-#endif
+ i = strlen (com_basedir);
+ if (i > 0 && (com_basedir[i-1] == '\\' || com_basedir[i-1] == '/'))
+ com_basedir[i-1] = 0;
// start up with GAMENAME by default (id1)
- COM_AddGameDirectory (va("%s/"GAMENAME, basedir) );
-
- switch(gamemode)
+ COM_AddGameDirectory (va("%s/"GAMENAME, com_basedir));
+ if (gamedirname[0])
{
- case GAME_NORMAL:
- break;
- case GAME_HIPNOTIC:
- COM_AddGameDirectory (va("%s/hipnotic", basedir) );
- break;
- case GAME_ROGUE:
- COM_AddGameDirectory (va("%s/rogue", basedir) );
- break;
- case GAME_NEHAHRA:
- COM_AddGameDirectory (va("%s/nehahra", basedir) );
- break;
- case GAME_FIENDARENA:
- COM_AddGameDirectory (va("%s/fiendarena", basedir) );
- break;
- case GAME_ZYMOTIC:
- COM_AddGameDirectory (va("%s/zymotic", basedir) );
- break;
- case GAME_TRANSFUSION:
- COM_AddGameDirectory (va("%s/transfusion", basedir) );
- break;
- default:
- Sys_Error("COM_InitFilesystem: unknown gamemode %i\n", gamemode);
- break;
+ com_modified = true;
+ COM_AddGameDirectory (va("%s/%s", com_basedir, gamedirname));
}
-//
-// -game <gamedir>
-// Adds basedir/gamedir as an override game
-//
+ // -game <gamedir>
+ // Adds basedir/gamedir as an override game
i = COM_CheckParm ("-game");
if (i && i < com_argc-1)
{
com_modified = true;
- COM_AddGameDirectory (va("%s/%s", basedir, com_argv[i+1]));
+ COM_AddGameDirectory (va("%s/%s", com_basedir, com_argv[i+1]));
}
-//
-// -path <dir or packfile> [<dir or packfile>] ...
-// Fully specifies the exact search path, overriding the generated one
-//
+ // -path <dir or packfile> [<dir or packfile>] ...
+ // Fully specifies the exact search path, overriding the generated one
i = COM_CheckParm ("-path");
if (i)
{
}
}
+int COM_StringBeginsWith(const char *s, const char *match)
+{
+ for (;*s && *match;s++, match++)
+ if (*s != *match)
+ return false;
+ return true;
+}
+