void Com_ExecuteCfg(void) { Cbuf_ExecuteText(EXEC_NOW, "exec default.cfg\n"); Cbuf_Execute(); // Always execute after exec to prevent text buffer overflowing if(!Com_SafeMode()) { // skip the q3config.cfg and autoexec.cfg if "safe" is on the command line Cbuf_ExecuteText(EXEC_NOW, "exec " Q3CONFIG_NAME "\n"); Cbuf_Execute(); Cbuf_ExecuteText(EXEC_NOW, "exec autoexec_sp.cfg\n"); Cbuf_Execute(); } }
/* ================= Com_Init ================= */ void Com_Init( char *commandLine ) { char *s; Com_Printf( "%s %s %s\n", Q3_VERSION, CPUSTRING, __DATE__ ); try { // prepare enough of the subsystems to handle // cvar and command buffer management Com_ParseCommandLine( commandLine ); Swap_Init (); Cbuf_Init (); Com_InitZoneMemory(); Cmd_Init (); Cvar_Init (); // get the commandline cvars set Com_StartupVariable( NULL ); // done early so bind command exists CL_InitKeyCommands(); FS_InitFilesystem (); //uses z_malloc Com_InitJournaling(); Cbuf_AddText ("exec default.cfg\n"); // skip the jk2config.cfg if "safe" is on the command line if ( !Com_SafeMode() ) { Cbuf_AddText ("exec jk2config.cfg\n"); } Cbuf_AddText ("exec autoexec.cfg\n"); Cbuf_Execute (); // override anything from the config files with command line args Com_StartupVariable( NULL ); // allocate the stack based hunk allocator Com_InitHunkMemory(); // if any archived cvars are modified after this, we will trigger a writing // of the config file cvar_modifiedFlags &= ~CVAR_ARCHIVE; // // init commands and vars // Cmd_AddCommand ("quit", Com_Quit_f); Cmd_AddCommand ("writeconfig", Com_WriteConfig_f ); com_maxfps = Cvar_Get ("com_maxfps", "85", CVAR_ARCHIVE); com_developer = Cvar_Get ("developer", "0", CVAR_TEMP ); com_logfile = Cvar_Get ("logfile", "0", CVAR_TEMP ); com_speedslog = Cvar_Get ("speedslog", "0", CVAR_TEMP ); com_timescale = Cvar_Get ("timescale", "1", CVAR_CHEAT ); com_fixedtime = Cvar_Get ("fixedtime", "0", CVAR_CHEAT); com_showtrace = Cvar_Get ("com_showtrace", "0", CVAR_CHEAT); com_viewlog = Cvar_Get( "viewlog", "0", CVAR_TEMP ); com_speeds = Cvar_Get ("com_speeds", "0", 0); cl_paused = Cvar_Get ("cl_paused", "0", CVAR_ROM); sv_paused = Cvar_Get ("sv_paused", "0", CVAR_ROM); com_sv_running = Cvar_Get ("sv_running", "0", CVAR_ROM); com_cl_running = Cvar_Get ("cl_running", "0", CVAR_ROM); com_skippingcin = Cvar_Get ("skippingCinematic", "0", CVAR_ROM); com_buildScript = Cvar_Get( "com_buildScript", "0", 0 ); com_FirstTime = Cvar_Get( "com_FirstTime", "0", CVAR_ARCHIVE); if ( com_developer && com_developer->integer ) { Cmd_AddCommand ("error", Com_Error_f); Cmd_AddCommand ("crash", Com_Crash_f ); Cmd_AddCommand ("freeze", Com_Freeze_f); } s = va("%s %s %s", Q3_VERSION, CPUSTRING, __DATE__ ); com_version = Cvar_Get ("version", s, CVAR_ROM | CVAR_SERVERINFO ); SP_Init(); // Initialize StripEd Sys_Init(); // this also detects CPU type, so I can now do this CPU check below... if( !com_FirstTime->integer ) // special request to detect and use top-settings for Intel Williamette chip... { Cvar_Set( "com_FirstTime", "1" ); // only do this once // // ( make a local ptr only for quick test, since this is a common module ) // cvar_t* s_CPUType = Cvar_Get("sys_cpuid","",0); if (s_CPUType->value == CPUID_INTEL_WILLIAMETTE) { Cbuf_AddText ("exec perfect.cfg\n"); // Cbuf_Execute (); } } Netchan_Init( Com_Milliseconds() & 0xffff ); // pick a port value that should be nice and random // VM_Init(); SV_Init(); CL_Init(); Sys_ShowConsole( com_viewlog->integer, qfalse ); // set com_frameTime so that if a map is started on the // command line it will still be able to count on com_frameTime // being random enough for a serverid com_frameTime = Com_Milliseconds(); // add + commands from command line if ( !Com_AddStartupCommands() ) { #ifdef NDEBUG // if the user didn't give any commands, run default action // if ( !com_dedicated->integer ) { Cbuf_AddText ("cinematic openinglogos\n"); // if( !com_introPlayed->integer ) { // Cvar_Set( com_introPlayed->name, "1" ); // Cvar_Set( "nextmap", "cinematic intro" ); // } } #endif } com_fullyInitialized = qtrue; Com_Printf ("--- Common Initialization Complete ---\n"); } catch (const char* reason) { Sys_Error ("Error during initialization %s", reason); } }