mirror of
https://github.com/w23/xash3d-fwgs
synced 2024-12-15 05:29:51 +01:00
engine: cmd: add apropos command from old engine
This commit is contained in:
parent
e700a7498e
commit
da4062ede9
@ -1139,6 +1139,83 @@ void Cmd_Unlink( int group )
|
||||
Con_Reportf( "unlink %i commands\n", count );
|
||||
}
|
||||
|
||||
static void Cmd_Apropos_f( void )
|
||||
{
|
||||
cmd_t *cmd;
|
||||
convar_t *var;
|
||||
cmdalias_t *alias;
|
||||
const char *partial;
|
||||
int count = 0;
|
||||
qboolean ispattern;
|
||||
|
||||
if( Cmd_Argc() > 1 )
|
||||
{
|
||||
partial = Cmd_Args();
|
||||
}
|
||||
else
|
||||
{
|
||||
Msg( "apropos what?\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
ispattern = partial && ( Q_strchr( partial, '*' ) || Q_strchr( partial, '?' ));
|
||||
if( !ispattern )
|
||||
partial = va( "*%s*", partial );
|
||||
|
||||
for( var = (convar_t*)Cvar_GetList(); var; var = var->next )
|
||||
{
|
||||
if( !matchpattern_with_separator( var->name, partial, true, "", false ) )
|
||||
{
|
||||
const char *desc;
|
||||
|
||||
if( var->flags & FCVAR_EXTENDED )
|
||||
desc = var->desc;
|
||||
else desc = "game cvar";
|
||||
|
||||
if( !desc )
|
||||
desc = "user cvar";
|
||||
|
||||
if( !matchpattern_with_separator( desc, partial, true, "", false ))
|
||||
continue;
|
||||
}
|
||||
|
||||
// TODO: maybe add flags output like cvarlist, also
|
||||
// fix inconsistencies in output from different commands
|
||||
Msg( "cvar ^3%s^7 is \"%s\" [\"%s\"] %s\n",
|
||||
var->name, var->string,
|
||||
( var->flags & FCVAR_EXTENDED ) ? var->def_string : "",
|
||||
( var->flags & FCVAR_EXTENDED ) ? var->desc : "game cvar");
|
||||
count++;
|
||||
}
|
||||
|
||||
for( cmd = Cmd_GetFirstFunctionHandle(); cmd; cmd = Cmd_GetNextFunctionHandle( cmd ) )
|
||||
{
|
||||
if( cmd->name[0] == '@' )
|
||||
continue; // never show system cmds
|
||||
|
||||
if( !matchpattern_with_separator( cmd->name, partial, true, "", false ) &&
|
||||
!matchpattern_with_separator( cmd->desc, partial, true, "", false ))
|
||||
continue;
|
||||
|
||||
Msg( "command ^2%s^7: %s\n", cmd->name, cmd->desc );
|
||||
count++;
|
||||
}
|
||||
|
||||
for( alias = Cmd_AliasGetList(); alias; alias = alias->next )
|
||||
{
|
||||
// proceed a bit differently here as an alias value always got a final \n
|
||||
if( !matchpattern_with_separator( alias->name, partial, true, "", false ) &&
|
||||
!matchpattern_with_separator( alias->value, partial, true, "\n", false )) // when \n is a separator, wildcards don't match it //-V666
|
||||
continue;
|
||||
|
||||
Msg( "alias ^5%s^7: %s", alias->name, alias->value ); // do not print an extra \n
|
||||
count++;
|
||||
}
|
||||
|
||||
Msg( "\n%i result%s\n\n", count, (count > 1) ? "s" : "" );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
============
|
||||
Cmd_Null_f
|
||||
@ -1170,6 +1247,7 @@ void Cmd_Init( void )
|
||||
Cmd_AddCommand( "wait", Cmd_Wait_f, "make script execution wait for some rendered frames" );
|
||||
Cmd_AddCommand( "cmdlist", Cmd_List_f, "display all console commands beginning with the specified prefix" );
|
||||
Cmd_AddCommand( "stuffcmds", Cmd_StuffCmds_f, "execute commandline parameters (must be present in .rc script)" );
|
||||
Cmd_AddCommand( "apropos", Cmd_Apropos_f, "lists all console variables/commands/aliases containing the specified string in the name or description" );
|
||||
#ifndef XASH_DEDICATED
|
||||
Cmd_AddCommand( "cmd", Cmd_ForwardToServer, "send a console commandline to the server" );
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user