static void Cmd_CmdList_f (void) { int i, m, count; cmd_function_t *sorted_cmds[128]; cmd_function_t *cmd; char *pattern; #define MAX_SORTED_CMDS (sizeof (sorted_cmds) / sizeof (sorted_cmds[0])) for (cmd = cmd_functions, count = 0; cmd && count < MAX_SORTED_CMDS; cmd = cmd->next, count++) sorted_cmds[count] = cmd; qsort (sorted_cmds, count, sizeof (cmd_function_t *), Cmd_CommandCompare); if (count == MAX_SORTED_CMDS) assert (!"count == MAX_SORTED_CMDS"); pattern = (Cmd_Argc() > 1) ? Cmd_Argv (1) : NULL; m = 0; Con_Printf ("List of commands:\n"); for (i = 0; i < count; i++) { cmd = sorted_cmds[i]; if (pattern && !Q_glob_match (pattern, cmd->name)) continue; Con_Printf ("%s\n", cmd->name); m++; } Con_Printf ("------------\n%d/%d %scommands\n", m, count, (pattern) ? "matching " : ""); }
/* =============== Cmd_AliasList_f =============== */ void Cmd_AliasList_f (void) { cmd_alias_t *a; char *pattern; pattern = Cmd_Argc() > 1 ? Cmd_Argv(1) : NULL; if (!pattern) Com_Printf ("Current alias commands:\n"); for (a = cmd_alias; a; a = a->next) { if (!pattern || Q_glob_match(pattern, a->name)) Com_Printf ("%s : %s\n\n", a->name, a->value); } }
void Cvar_CvarList (qbool use_regex) { static cvar_t *sorted_cvars[4096]; int i, c, m = 0, count; cvar_t *var; char *pattern; #define MAX_SORTED_CVARS (sizeof (sorted_cvars) / sizeof (sorted_cvars[0])) for (var = cvar_vars, count = 0; var && count < MAX_SORTED_CVARS; var = var->next, count++) sorted_cvars[count] = var; qsort (sorted_cvars, count, sizeof (cvar_t *), Cvar_CvarCompare); if (count == MAX_SORTED_CVARS) assert(!"count == MAX_SORTED_CVARS"); pattern = (Cmd_Argc() > 1) ? Cmd_Argv(1) : NULL; if (((c = Cmd_Argc()) > 1) && use_regex) if (!ReSearchInit(Cmd_Argv(1))) return; Com_Printf ("List of cvars:\n"); for (i = 0; i < count; i++) { var = sorted_cvars[i]; if (use_regex) { if (!(c == 1 || ReSearchMatch (var->name))) continue; } else { if (pattern && !Q_glob_match (pattern, var->name)) continue; } Com_Printf ("%c%c %s\n", var->flags & CVAR_USERINFO ? 'u' : ' ', var->flags & CVAR_SERVERINFO ? 's' : ' ', var->name); m++; } if (use_regex && (c > 1)) ReSearchDone (); Com_Printf ("------------\n%i/%i %svariables\n", m, count, (pattern) ? "matching " : ""); }
/* =========== Cmd_CmdList_f cmdlist [pattern [pattern2 ...]] List commands matching any of the wildcards, or all commands if no wildcard is specified =========== */ void Cmd_CmdList_f (void) { cmd_function_t *cmd; int count; char *pattern; pattern = Cmd_Argc() > 1 ? Cmd_Argv(1) : NULL; count = 0; for (cmd = cmd_functions; cmd; cmd = cmd->next) { if (pattern && !Q_glob_match(pattern, cmd->name)) continue; Com_Printf ("%s\n", cmd->name); count++; } Com_Printf ("------------\n%d %scommands\n", count, pattern ? "matching " : ""); }
static qbool Q_glob_match_after_star (const char *pattern, const char *text) { char c, c1; const char *p = pattern, *t = text; while ((c = *p++) == '?' || c == '*') { if (c == '?' && *t++ == '\0') return false; } if (c == '\0') return true; for (c1 = ((c == '\\') ? *p : c); ; ) { if (tolower(*t) == c1 && Q_glob_match (p - 1, t)) return true; if (*t++ == '\0') return false; } }
/* =============== Cvar_CvarList_f Lists all cvars =============== */ void Cvar_CvarList_f (void) { cvar_t *var; int count; const char *pattern; pattern = (Cmd_Argc() > 1) ? Cmd_Argv(1) : NULL; count = 0; for (var = cvar_vars; var; var = var->next) { if (pattern && !Q_glob_match(pattern, var->name)) continue; Com_Printf ("%c%c%c %s\n", var->flags & (CVAR_ARCHIVE|CVAR_USER_ARCHIVE) ? '*' : ' ', var->flags & CVAR_USERINFO ? 'u' : ' ', var->flags & CVAR_SERVERINFO ? 's' : ' ', var->name); count++; } Com_Printf ("------------\n%d %svariables\n", count, pattern ? "matching " : ""); }