]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cmd.c
added vid_stereobuffer cvar based on patch from syschuck on the alientrap forums
[xonotic/darkplaces.git] / cmd.c
diff --git a/cmd.c b/cmd.c
index 7f2a113a50df808e97988f3b303e6542c22f22fa..504a88d5a2bc30ecca50a0fe4053a3ffb073b850 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -281,6 +281,12 @@ static void Cmd_Exec_f (void)
        }
        Con_DPrintf("execing %s\n",Cmd_Argv(1));
 
+       // if executing default.cfg for the first time, lock the cvar defaults
+       // it may seem backwards to insert this text BEFORE the default.cfg
+       // but Cbuf_InsertText inserts before, so this actually ends up after it.
+       if (!strcmp(Cmd_Argv(1), "default.cfg"))
+               Cbuf_InsertText("\ncvar_lockdefaults\n");
+
        Cbuf_InsertText (f);
        Mem_Free(f);
 }
@@ -323,7 +329,7 @@ static void Cmd_Toggle_f(void)
        { // Correct Arguments Specified
                // Acquire Potential CVar
                cvar_t* cvCVar = Cvar_FindVar( Cmd_Argv(1) );
-               
+
                if(cvCVar != NULL)
                { // Valid CVar
                        if(nNumArgs == 2)
@@ -395,6 +401,7 @@ static void Cmd_Alias_f (void)
        char            cmd[MAX_INPUTLINE];
        int                     i, c;
        const char              *s;
+       size_t          alloclen;
 
        if (Cmd_Argc() == 1)
        {
@@ -450,8 +457,9 @@ static void Cmd_Alias_f (void)
        }
        strlcat (cmd, "\n", sizeof (cmd));
 
-       a->value = (char *)Z_Malloc (strlen (cmd) + 1);
-       strcpy (a->value, cmd);
+       alloclen = strlen (cmd) + 1;
+       a->value = (char *)Z_Malloc (alloclen);
+       memcpy (a->value, cmd, alloclen);
 }
 
 /*
@@ -546,7 +554,8 @@ static void Cmd_PreprocessString( const char *intext, char *outtext, unsigned ma
                                const char *tempin = in;
 
                                COM_ParseTokenConsole( &tempin );
-                               if ((cvar = Cvar_FindVar(&com_token[0]))) {
+                               // don't expand rcon_password or similar cvars (CVAR_PRIVATE flag)
+                               if ((cvar = Cvar_FindVar(&com_token[0])) && !(cvar->flags & CVAR_PRIVATE)) {
                                        const char *cvarcontent = cvar->string;
                                        while( *cvarcontent && outlen < maxoutlen ) {
                                                outtext[outlen++] = *cvarcontent++;
@@ -661,6 +670,11 @@ void Cmd_Init_Commands (void)
        Cmd_AddCommand ("cmdlist", Cmd_List_f, "lists all console commands beginning with the specified prefix");
        Cmd_AddCommand ("cvarlist", Cvar_List_f, "lists all console variables beginning with the specified prefix");
 
+       Cmd_AddCommand ("cvar_lockdefaults", Cvar_LockDefaults_f, "stores the current values of all cvars into their default values, only used once during startup after parsing default.cfg");
+       Cmd_AddCommand ("cvar_resettodefaults_all", Cvar_ResetToDefaults_All_f, "sets all cvars to their locked default values");
+       Cmd_AddCommand ("cvar_resettodefaults_nosaveonly", Cvar_ResetToDefaults_NoSaveOnly_f, "sets all non-saved cvars to their locked default values (variables that will not be saved to config.cfg)");
+       Cmd_AddCommand ("cvar_resettodefaults_saveonly", Cvar_ResetToDefaults_SaveOnly_f, "sets all saved cvars to their locked default values (variables that will be saved to config.cfg)");
+
        // DRESK - 5/14/06
        // Support Doom3-style Toggle Command
        Cmd_AddCommand( "toggle", Cmd_Toggle_f, "toggles a console variable's values (use for more info)");
@@ -760,7 +774,7 @@ static void Cmd_TokenizeString (const char *text)
                                Con_Printf("Cmd_TokenizeString: ran out of %i character buffer space for command arguements\n", CMD_TOKENIZELENGTH);
                                break;
                        }
-                       strcpy (cmd_tokenizebuffer + cmd_tokenizebufferpos, com_token);
+                       memcpy (cmd_tokenizebuffer + cmd_tokenizebufferpos, com_token, l);
                        cmd_argv[cmd_argc] = cmd_tokenizebuffer + cmd_tokenizebufferpos;
                        cmd_tokenizebufferpos += l;
                        cmd_argc++;