]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cvar.c
Print cvar aliases in apropos and cvarlist output properly
[xonotic/darkplaces.git] / cvar.c
diff --git a/cvar.c b/cvar.c
index 7022f085d21c16085d0f34ff50eb308bcdb7b11d..7e73bec455e0b4dc7a0c948c55cb7dbd41a72c98 100644 (file)
--- a/cvar.c
+++ b/cvar.c
@@ -1002,39 +1002,47 @@ void Cvar_List_f(cmd_state_t *cmd)
        cvar_state_t *cvars = cmd->cvars;
        cvar_t *cvar;
        const char *partial;
-       size_t len;
        int count;
        qboolean ispattern;
+       char vabuf[1024];
 
        if (Cmd_Argc(cmd) > 1)
        {
                partial = Cmd_Argv(cmd, 1);
-               len = strlen(partial);
                ispattern = (strchr(partial, '*') || strchr(partial, '?'));
+               if(!ispattern)
+                       partial = va(vabuf, sizeof(vabuf), "%s*", partial);
        }
        else
        {
-               partial = NULL;
-               len = 0;
+               partial = va(vabuf, sizeof(vabuf), "*");
                ispattern = false;
        }
 
        count = 0;
        for (cvar = cvars->vars; cvar; cvar = cvar->next)
        {
-               if (len && (ispattern ? !matchpattern_with_separator(cvar->name, partial, false, "", false) : strncmp (partial,cvar->name,len)))
-                       continue;
-
-               Cvar_PrintHelp(cvar, cvar->name, true);
-               count++;
+               if (matchpattern_with_separator(cvar->name, partial, false, "", false))
+               {
+                       Cvar_PrintHelp(cvar, cvar->name, true);
+                       count++;
+               }
+               for (int i = 0; i < cvar->aliasindex; i++)
+               {
+                       if (matchpattern_with_separator(cvar->aliases[i], partial, false, "", false))
+                       {
+                               Cvar_PrintHelp(cvar, cvar->aliases[i], true);
+                               count++;
+                       }
+               }
        }
 
-       if (len)
+       if (Cmd_Argc(cmd) > 1)
        {
                if(ispattern)
                        Con_Printf("%i cvar%s matching \"%s\"\n", count, (count > 1) ? "s" : "", partial);
                else
-                       Con_Printf("%i cvar%s beginning with \"%s\"\n", count, (count > 1) ? "s" : "", partial);
+                       Con_Printf("%i cvar%s beginning with \"%s\"\n", count, (count > 1) ? "s" : "", Cmd_Argv(cmd,1));
        }
        else
                Con_Printf("%i cvar(s)\n", count);