Add a way to rewrite cvars loaded from config.cfg.

With this renamed cvars can be rewritten when config.cfg is first
loaded. Please note that once this was done older YQ2 versions can't
parse that config.cfg anymore.
This commit is contained in:
Yamagi Burmeister 2017-12-14 19:48:44 +01:00
parent 430e21eab0
commit b433ee10fd
3 changed files with 41 additions and 5 deletions

View File

@ -924,6 +924,9 @@ Cmd_IsComplete(char *command)
/* ugly hack to suppress warnings from default.cfg in Key_Bind_f() */
qboolean doneWithDefaultCfg;
/* Another ugly hack, this time to rewrite CVARs loaded from config.cfg */
qboolean doneWithCfg;
/*
* A complete command line has been parsed, so try to execute it
*/
@ -947,6 +950,12 @@ Cmd_ExecuteString(char *text)
doneWithDefaultCfg = true;
}
if(Cmd_Argc() > 1 && Q_strcasecmp(cmd_argv[0], "exec") == 0 && Q_strcasecmp(cmd_argv[1], "autoexec.cfg") == 0)
{
/* exec autoexec.cfg is done directly after exec config.cfg, see Qcommon_Init() */
doneWithCfg = true;
}
/* check functions */
for (cmd = cmd_functions; cmd; cmd = cmd->next)
{

View File

@ -28,6 +28,18 @@
cvar_t *cvar_vars;
typedef struct
{
char *old;
char *new;
} replacement_t;
/* An ugly hack to rewrite CVARs loaded from config.cfg */
replacement_t replacements[] = {
};
static qboolean
Cvar_InfoValidate(char *s)
{
@ -408,8 +420,8 @@ Cvar_Command(void)
void
Cvar_Set_f(void)
{
int c;
int flags;
char *firstarg;
int c, flags, i;
c = Cmd_Argc();
@ -419,6 +431,19 @@ Cvar_Set_f(void)
return;
}
firstarg = Cmd_Argv(1);
/* An ugly hack to rewrite CVARs loaded from config.cfg */
if (!doneWithCfg)
{
for (i = 0; i < sizeof(replacements) / sizeof(replacement_t); i++)
{
if (!strcmp(firstarg, replacements[i].old))
{
firstarg = replacements[i].new;
}
}
}
if (c == 4)
{
if (!strcmp(Cmd_Argv(3), "u"))
@ -437,12 +462,11 @@ Cvar_Set_f(void)
return;
}
Cvar_FullSet(Cmd_Argv(1), Cmd_Argv(2), flags);
Cvar_FullSet(firstarg, Cmd_Argv(2), flags);
}
else
{
Cvar_Set(Cmd_Argv(1), Cmd_Argv(2));
Cvar_Set(firstarg, Cmd_Argv(2));
}
}

View File

@ -313,6 +313,9 @@ enum clc_ops_e
#define EXEC_INSERT 1 /* insert at current position, but don't run yet */
#define EXEC_APPEND 2 /* add to end of the command buffer */
/* An ugly hack to rewrite CVARs loaded from config.cfg */
extern qboolean doneWithCfg;
void Cbuf_Init(void);
/* allocates an initial text buffer that will grow as needed */