cvarlist changes, cvarreset added
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1244 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
5e20d80817
commit
ba4e46bf9f
2 changed files with 182 additions and 29 deletions
|
@ -917,6 +917,7 @@ void Alias_WipeStuffedAliaes(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
void Cvar_List_f (void);
|
void Cvar_List_f (void);
|
||||||
|
void Cvar_Reset_f (void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
=============================================================================
|
=============================================================================
|
||||||
|
@ -2722,6 +2723,7 @@ void Cmd_Init (void)
|
||||||
Cmd_AddCommand ("cmdlist", Cmd_List_f);
|
Cmd_AddCommand ("cmdlist", Cmd_List_f);
|
||||||
Cmd_AddCommand ("aliaslist", Cmd_AliasList_f);
|
Cmd_AddCommand ("aliaslist", Cmd_AliasList_f);
|
||||||
Cmd_AddCommand ("cvarlist", Cvar_List_f);
|
Cmd_AddCommand ("cvarlist", Cvar_List_f);
|
||||||
|
Cmd_AddCommand ("cvarreset", Cvar_Reset_f);
|
||||||
Cmd_AddCommand ("fs_flush", COM_RefreshFSCache_f);
|
Cmd_AddCommand ("fs_flush", COM_RefreshFSCache_f);
|
||||||
Cvar_Register(&com_fs_cache, "Filesystem");
|
Cvar_Register(&com_fs_cache, "Filesystem");
|
||||||
Cvar_Register(&tp_disputablemacros, "Teamplay");
|
Cvar_Register(&tp_disputablemacros, "Teamplay");
|
||||||
|
|
|
@ -111,6 +111,7 @@ char *Cvar_FlagToName(int flag)
|
||||||
//lists commands, also prints restriction level
|
//lists commands, also prints restriction level
|
||||||
#define CLF_RAW 0x1
|
#define CLF_RAW 0x1
|
||||||
#define CLF_LEVEL 0x2
|
#define CLF_LEVEL 0x2
|
||||||
|
#define CLF_ALTNAME 0x4
|
||||||
#define CLF_VALUES 0x8
|
#define CLF_VALUES 0x8
|
||||||
#define CLF_DEFAULT 0x10
|
#define CLF_DEFAULT 0x10
|
||||||
#define CLF_LATCHES 0x20
|
#define CLF_LATCHES 0x20
|
||||||
|
@ -122,11 +123,10 @@ void Cvar_List_f (void)
|
||||||
cvar_t *cmd;
|
cvar_t *cmd;
|
||||||
char *var, *search, *gsearch;
|
char *var, *search, *gsearch;
|
||||||
int gnum, i, num = 0;
|
int gnum, i, num = 0;
|
||||||
int listflags = 0, cvarflags;
|
int listflags = 0, cvarflags = 0;
|
||||||
|
char strtmp[512];
|
||||||
|
|
||||||
cvarflags = (CVAR_LASTFLAG << 1) - 1;
|
|
||||||
gsearch = search = NULL;
|
gsearch = search = NULL;
|
||||||
|
|
||||||
for (i = 1; i < Cmd_Argc(); i++)
|
for (i = 1; i < Cmd_Argc(); i++)
|
||||||
{
|
{
|
||||||
var = Cmd_Argv(i);
|
var = Cmd_Argv(i);
|
||||||
|
@ -135,8 +135,9 @@ void Cvar_List_f (void)
|
||||||
// short options
|
// short options
|
||||||
for (var++; *var; var++)
|
for (var++; *var; var++)
|
||||||
{
|
{
|
||||||
if (*var == 'g')
|
switch (*var)
|
||||||
{
|
{
|
||||||
|
case 'g':
|
||||||
// fix this so we can search for multiple groups
|
// fix this so we can search for multiple groups
|
||||||
i++;
|
i++;
|
||||||
if (i >= Cmd_Argc())
|
if (i >= Cmd_Argc())
|
||||||
|
@ -146,26 +147,30 @@ void Cvar_List_f (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
gsearch = Cmd_Argv(i);
|
gsearch = Cmd_Argv(i);
|
||||||
}
|
break;
|
||||||
else if (*var == 'l')
|
case 'a':
|
||||||
|
listflags |= CLF_ALTNAME;
|
||||||
|
break;
|
||||||
|
case 'l':
|
||||||
listflags |= CLF_LEVEL;
|
listflags |= CLF_LEVEL;
|
||||||
else if (*var == 'r')
|
break;
|
||||||
|
case 'r':
|
||||||
listflags |= CLF_RAW;
|
listflags |= CLF_RAW;
|
||||||
else if (*var == 'v')
|
break;
|
||||||
|
case 'v':
|
||||||
listflags |= CLF_VALUES;
|
listflags |= CLF_VALUES;
|
||||||
else if (*var == 'd')
|
break;
|
||||||
|
case 'd':
|
||||||
listflags |= CLF_DEFAULT;
|
listflags |= CLF_DEFAULT;
|
||||||
else if (*var == 'L')
|
break;
|
||||||
|
case 'L':
|
||||||
listflags |= CLF_LATCHES;
|
listflags |= CLF_LATCHES;
|
||||||
else if (*var == 'f')
|
break;
|
||||||
|
case 'f':
|
||||||
{
|
{
|
||||||
char *tmpv;
|
char *tmpv;
|
||||||
|
|
||||||
if (!(listflags & CLF_FLAGMASK))
|
listflags |= CLF_FLAGMASK;
|
||||||
{
|
|
||||||
listflags |= CLF_FLAGMASK;
|
|
||||||
cvarflags = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
i++;
|
||||||
if (i >= Cmd_Argc())
|
if (i >= Cmd_Argc())
|
||||||
|
@ -195,21 +200,25 @@ void Cvar_List_f (void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (*var == 'F')
|
break;
|
||||||
|
case 'F':
|
||||||
listflags |= CLF_FLAGS;
|
listflags |= CLF_FLAGS;
|
||||||
else if (*var == 'h')
|
break;
|
||||||
{
|
case 'h':
|
||||||
// list options
|
// list options
|
||||||
Con_Printf("Syntax: cvarlist [-FLdhlr] [-f flag] [-g groupstring] [searchstring]\n"
|
Con_Printf("cvarlist list all cvars matching given parameters\n"
|
||||||
|
"Syntax: cvarlist [-FLdhlrv] [-f flag] [-g group] [cvar]\n"
|
||||||
" -F shows cvar flags\n"
|
" -F shows cvar flags\n"
|
||||||
" -L shows latched values\n"
|
" -L shows latched values\n"
|
||||||
|
" -a shows cvar alternate names\n"
|
||||||
" -d shows default cvar values\n"
|
" -d shows default cvar values\n"
|
||||||
" -f shows only cvars with a matching flag, more than one -f can be used\n"
|
" -f shows only cvars with a matching flag, more than one -f can be used\n"
|
||||||
" -g shows only cvar groups with the substring of groupstring\n"
|
" -g shows only cvar groups using wildcards in group\n"
|
||||||
" -h shows this help message\n"
|
" -h shows this help message\n"
|
||||||
" -l shows cvar restriction levels\n"
|
" -l shows cvar restriction levels\n"
|
||||||
" -r removes group and list headers\n"
|
" -r removes group and list headers\n"
|
||||||
" -v shows current values\n"
|
" -v shows current values\n"
|
||||||
|
" cvar indicates the cvar to show, wildcards (*,?) accepted\n"
|
||||||
"Cvar flags are:");
|
"Cvar flags are:");
|
||||||
|
|
||||||
for (num = 1; num <= CVAR_LASTFLAG; num <<= 1)
|
for (num = 1; num <= CVAR_LASTFLAG; num <<= 1)
|
||||||
|
@ -223,9 +232,9 @@ void Cvar_List_f (void)
|
||||||
|
|
||||||
Con_Printf("\n\n");
|
Con_Printf("\n\n");
|
||||||
return;
|
return;
|
||||||
}
|
case '-':
|
||||||
else if (*var != '-')
|
break;
|
||||||
{
|
default:
|
||||||
Con_Printf("Invalid option for cvarlist\nUse cvarlist -h for help\n");
|
Con_Printf("Invalid option for cvarlist\nUse cvarlist -h for help\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -235,11 +244,23 @@ void Cvar_List_f (void)
|
||||||
search = var;
|
search = var;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is sane.. hopefully
|
||||||
|
if (gsearch)
|
||||||
|
Q_strlwr(gsearch);
|
||||||
|
|
||||||
|
if (search)
|
||||||
|
Q_strlwr(search);
|
||||||
|
|
||||||
for (grp=cvar_groups ; grp ; grp=grp->next)
|
for (grp=cvar_groups ; grp ; grp=grp->next)
|
||||||
{
|
{
|
||||||
// list only cvars with group search substring
|
// list only cvars with group search substring
|
||||||
if (gsearch && !strstr(grp->name, gsearch))
|
if (gsearch)
|
||||||
continue;
|
{
|
||||||
|
Q_strncpyz(strtmp, grp->name, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
if (!wildcmp(gsearch, strtmp))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
gnum = 0;
|
gnum = 0;
|
||||||
for (cmd=grp->cvars ; cmd ; cmd=cmd->next)
|
for (cmd=grp->cvars ; cmd ; cmd=cmd->next)
|
||||||
|
@ -249,11 +270,27 @@ void Cvar_List_f (void)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// list only cvars with search substring
|
// list only cvars with search substring
|
||||||
if (search && !strstr(cmd->name, search))
|
if (search)
|
||||||
continue;
|
{
|
||||||
|
Q_strncpyz(strtmp, cmd->name, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
|
||||||
|
if (!wildcmp(search, strtmp))
|
||||||
|
{
|
||||||
|
if (cmd->name2)
|
||||||
|
{
|
||||||
|
Q_strncpyz(strtmp, cmd->name2, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
if (!wildcmp(search, strtmp))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// list only cvars with matching flags
|
// list only cvars with matching flags
|
||||||
if (!(cmd->flags & cvarflags))
|
if ((listflags & CLF_FLAGMASK) && !(cmd->flags & cvarflags))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// print cvar list header
|
// print cvar list header
|
||||||
|
@ -282,6 +319,10 @@ void Cvar_List_f (void)
|
||||||
if (listflags & CLF_DEFAULT)
|
if (listflags & CLF_DEFAULT)
|
||||||
Con_Printf(", default \"%s\"", cmd->defaultstr);
|
Con_Printf(", default \"%s\"", cmd->defaultstr);
|
||||||
|
|
||||||
|
// print alternate name
|
||||||
|
if ((listflags & CLF_ALTNAME) && cmd->name2)
|
||||||
|
Con_Printf(", alternate %s", cmd->name2);
|
||||||
|
|
||||||
// print cvar flags
|
// print cvar flags
|
||||||
if (listflags & CLF_FLAGS)
|
if (listflags & CLF_FLAGS)
|
||||||
{
|
{
|
||||||
|
@ -316,6 +357,116 @@ void Cvar_List_f (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CRF_ALTNAME 0x1
|
||||||
|
void Cvar_Reset_f (void)
|
||||||
|
{
|
||||||
|
cvar_group_t *grp;
|
||||||
|
cvar_t *cmd;
|
||||||
|
int i, listflags;
|
||||||
|
char *var;
|
||||||
|
char *search, *gsearch;
|
||||||
|
char strtmp[512];
|
||||||
|
|
||||||
|
search = gsearch = NULL;
|
||||||
|
|
||||||
|
// parse command line options
|
||||||
|
for (i = 1; i < Cmd_Argc(); i++)
|
||||||
|
{
|
||||||
|
var = Cmd_Argv(i);
|
||||||
|
if (*var == '-')
|
||||||
|
{
|
||||||
|
// short options
|
||||||
|
for (var++; *var; var++)
|
||||||
|
{
|
||||||
|
switch (*var)
|
||||||
|
{
|
||||||
|
case 'a':
|
||||||
|
listflags |= CRF_ALTNAME;
|
||||||
|
break;
|
||||||
|
case 'g':
|
||||||
|
// fix this so we can search for multiple groups
|
||||||
|
i++;
|
||||||
|
if (i >= Cmd_Argc())
|
||||||
|
{
|
||||||
|
Con_Printf("Missing parameter for -g\nUse cvarlist -h for help\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gsearch = Cmd_Argv(i);
|
||||||
|
break;
|
||||||
|
case 'h':
|
||||||
|
Con_Printf("cvarreset resets all cvars to default values matching given parameters\n"
|
||||||
|
"Syntax: cvarreset [-a] (-g group)/cvar\n"
|
||||||
|
" -a matches cvar against alternate cvar names\n"
|
||||||
|
" -g matches using wildcards in group\n"
|
||||||
|
" -h shows this help message\n"
|
||||||
|
" cvar indicates the cvars to reset, wildcards (*, ?) accepted\n"
|
||||||
|
"A -g or cvar is required\n");
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
Con_Printf("Invalid option for cvarreset\nUse cvarreset -h for help\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
search = var;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!search && !gsearch)
|
||||||
|
{
|
||||||
|
Con_Printf("No group or cvars given\nUse cvarreset -h for help\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this should be sane.. hopefully
|
||||||
|
if (search)
|
||||||
|
Q_strlwr(search);
|
||||||
|
if (gsearch)
|
||||||
|
Q_strlwr(gsearch);
|
||||||
|
|
||||||
|
for (grp=cvar_groups ; grp ; grp=grp->next)
|
||||||
|
{
|
||||||
|
if (gsearch)
|
||||||
|
{
|
||||||
|
Q_strncpyz(strtmp, grp->name, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
if (!wildcmp(gsearch, strtmp))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (cmd=grp->cvars ; cmd ; cmd=cmd->next)
|
||||||
|
{
|
||||||
|
// reset only non-restricted cvars
|
||||||
|
if ((cmd->restriction?cmd->restriction:rcon_level.value) > Cmd_ExecLevel)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// reset only cvars with search substring
|
||||||
|
if (search)
|
||||||
|
{
|
||||||
|
Q_strncpyz(strtmp, cmd->name, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
|
||||||
|
if (!wildcmp(search, strtmp))
|
||||||
|
{
|
||||||
|
if ((listflags & CRF_ALTNAME) && cmd->name2)
|
||||||
|
{
|
||||||
|
Q_strncpyz(strtmp, cmd->name2, 512);
|
||||||
|
Q_strlwr(strtmp);
|
||||||
|
if (!wildcmp(search, strtmp))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset cvar to default
|
||||||
|
Cvar_Set(cmd, cmd->defaultstr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
============
|
============
|
||||||
Cvar_VariableValue
|
Cvar_VariableValue
|
||||||
|
|
Loading…
Reference in a new issue