engine: use BaseCmd_FindAll when looking for cvars and cmds simultaneously

This commit is contained in:
Alibek Omarov
2026-02-20 21:56:59 +05:00
parent e0f01ddae7
commit 19dfec5f52
3 changed files with 23 additions and 10 deletions

View File

@@ -21,6 +21,7 @@ GNU General Public License for more details.
#include "shake.h"
#include "hltv.h"
#include "input.h"
#include "base_cmd.h"
enum {
STAT_HEALTH = 0,
@@ -866,7 +867,13 @@ static void CL_QuakeExecStuff( void )
if( argc == 0 )
{
// debug: find all missed commands and cvars to add them into QWrap
if( !Cvar_Exists( token ) && !Cmd_Exists( token ))
cmdalias_t *alias;
cmd_t *cmd;
convar_t *cvar;
BaseCmd_FindAll( token, &cmd, &alias, &cvar );
if( !cvar && !cmd )
Con_Printf( S_WARN "'%s' is not exist\n", token );
// else Msg( "cmd: %s\n", token );

View File

@@ -650,6 +650,8 @@ int Cmd_AddCommandEx( const char *cmd_name, xcommand_t function, const char *cmd
{
cmd_t *cmd, *cur, *prev;
size_t desc_len;
convar_t *cvar;
cmdalias_t *alias;
if( !COM_CheckString( cmd_name ))
{
@@ -658,14 +660,14 @@ int Cmd_AddCommandEx( const char *cmd_name, xcommand_t function, const char *cmd
}
// fail if the command is a variable name
if( Cvar_FindVar( cmd_name ))
BaseCmd_FindAll( cmd_name, &cmd, &alias, &cvar );
if( cvar )
{
Con_DPrintf( S_ERROR "%s: %s already defined as a var\n", funcname, cmd_name );
return 0;
}
// fail if the command already exists and cannot be overriden
cmd = Cmd_Exists( cmd_name );
if( cmd )
{
// some mods register commands that share the name with some engine's commands

View File

@@ -407,19 +407,21 @@ The flags will be or'ed in if the variable exists.
*/
convar_t *Cvar_Get( const char *name, const char *value, uint32_t flags, const char *var_desc )
{
convar_t *cur, *find, *var;
convar_t *cur, *find, *var;
cmd_t *cmd;
cmdalias_t *alias;
ASSERT( name && *name );
BaseCmd_FindAll( name, &cmd, &alias, &var );
// check for command coexisting
if( Cmd_Exists( name ))
if( cmd )
{
Con_DPrintf( S_ERROR "can't register variable '%s', is already defined as command\n", name );
return NULL;
}
var = Cvar_FindVar( name );
if( var )
{
// already existed?
@@ -519,12 +521,14 @@ Adds a freestanding variable to the variable list.
*/
void Cvar_RegisterVariable( convar_t *var )
{
convar_t *cur, *find, *dup;
convar_t *cur, *find, *dup;
cmd_t *cmd;
cmdalias_t *alias;
ASSERT( var != NULL );
// first check to see if it has allready been defined
dup = Cvar_FindVar( var->name );
BaseCmd_FindAll( var->name, &cmd, &alias, &dup );
if( dup )
{
@@ -539,7 +543,7 @@ void Cvar_RegisterVariable( convar_t *var )
}
// check for overlap with a command
if( Cmd_Exists( var->name ))
if( cmd )
{
Con_DPrintf( S_ERROR "can't register variable '%s', is already defined as command\n", var->name );
return;