]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cmd.c
fix a compile error when MEMPARANOIA is off
[xonotic/darkplaces.git] / cmd.c
diff --git a/cmd.c b/cmd.c
index 133865c931aacbe965287f3da20f090dba57b49f..391b0c7b0a4eed5cfd4a169536d6f5e8179b2778 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -25,7 +25,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 // this is the largest script file that can be executed in one step
 // LordHavoc: inreased this from 8192 to 32768
 // div0: increased this from 32k to 128k
-#define CMDBUFSIZE 131072
+// div0: increased this from 128k to 640k which ought to be enough for anyone
+#define CMDBUFSIZE 655360
 // maximum number of parameters to a command
 #define        MAX_ARGS 80
 // maximum tokenizable commandline length (counting NUL terminations)
@@ -320,7 +321,7 @@ void Cbuf_Execute (void)
                                }
                                else
                                {
-                                       if(text[i] == '/' && text[i + 1] == '/')
+                                       if(text[i] == '/' && text[i + 1] == '/' && (i == 0 || ISWHITESPACE(text[i-1])))
                                                comment = true;
                                        if(text[i] == ';')
                                                break;  // don't break if inside a quoted string or comment
@@ -875,7 +876,7 @@ static const char *Cmd_GetCvarValue(const char *var, size_t varlen, cmdalias_t *
 /*
 Cmd_PreprocessString
 
-Preprocesses strings and replaces $*, $param#, $cvar accordingly
+Preprocesses strings and replaces $*, $param#, $cvar accordingly. Also strips comments.
 */
 static void Cmd_PreprocessString( const char *intext, char *outtext, unsigned maxoutlen, cmdalias_t *alias ) {
        const char *in;
@@ -982,9 +983,9 @@ static void Cmd_PreprocessString( const char *intext, char *outtext, unsigned ma
                                        --eat;
                                }
                        }
-               } else {
-                       outtext[outlen++] = *in++;
                }
+               else 
+                       outtext[outlen++] = *in++;
        }
        outtext[outlen] = 0;
 }
@@ -1090,33 +1091,31 @@ static void Cmd_Apropos_f(void)
        }
 
        count = 0;
-       Con_Printf("Cvars:\n");
        for (cvar = cvar_vars; cvar; cvar = cvar->next)
        {
-               if (!matchpattern_with_separator(cvar->name, partial, false, "", false))
-               if (!matchpattern_with_separator(cvar->description, partial, false, "", false))
+               if (!matchpattern_with_separator(cvar->name, partial, true, "", false))
+               if (!matchpattern_with_separator(cvar->description, partial, true, "", false))
                        continue;
-               Con_Printf("^3%s^7: %s\n", cvar->name, cvar->description);
+               Con_Printf ("cvar ^3%s^7 is \"%s\" [\"%s\"] %s\n", cvar->name, cvar->string, cvar->defstring, cvar->description);
                count++;
        }
-       Con_Printf("Commands:\n");
        for (cmd = cmd_functions; cmd; cmd = cmd->next)
        {
-               if (!matchpattern_with_separator(cmd->name, partial, false, "", false))
-               if (!matchpattern_with_separator(cmd->description, partial, false, "", false))
+               if (!matchpattern_with_separator(cmd->name, partial, true, "", false))
+               if (!matchpattern_with_separator(cmd->description, partial, true, "", false))
                        continue;
-               Con_Printf("^3%s^7: %s\n", cmd->name, cmd->description);
+               Con_Printf("command ^2%s^7: %s\n", cmd->name, cmd->description);
                count++;
        }
-       Con_Printf("Aliases:\n");
        for (alias = cmd_alias; alias; alias = alias->next)
        {
-               if (!matchpattern_with_separator(alias->name, partial, false, "", false))
-               if (!matchpattern_with_separator(alias->value, partial, false, "", false))
+               if (!matchpattern_with_separator(alias->name, partial, true, "", false))
+               if (!matchpattern_with_separator(alias->value, partial, true, "", false))
                        continue;
-               Con_Printf("^3%s^7: %s", alias->name, alias->value);
+               Con_Printf("alias ^5%s^7: %s", alias->name, alias->value);
                count++;
        }
+       Con_Printf("%i result%s\n\n", count, (count > 1) ? "s" : "");
 }
 
 /*
@@ -1141,11 +1140,14 @@ void Cmd_Init_Commands (void)
        Cmd_AddCommand ("stuffcmds",Cmd_StuffCmds_f, "execute commandline parameters (must be present in quake.rc script)");
        Cmd_AddCommand ("exec",Cmd_Exec_f, "execute a script file");
        Cmd_AddCommand ("echo",Cmd_Echo_f, "print a message to the console (useful in scripts)");
-       Cmd_AddCommand ("alias",Cmd_Alias_f, "create a script function (parameters are passed in as $1 through $9, and $* for all parameters)");
+       Cmd_AddCommand ("alias",Cmd_Alias_f, "create a script function (parameters are passed in as $X (being X a number), $* for all parameters, $X- for all parameters starting from $X). Without arguments show the list of all alias");
        Cmd_AddCommand ("cmd", Cmd_ForwardToServer, "send a console commandline to the server (used by some mods)");
        Cmd_AddCommand ("wait", Cmd_Wait_f, "make script execution wait for next rendered frame");
        Cmd_AddCommand ("set", Cvar_Set_f, "create or change the value of a console variable");
        Cmd_AddCommand ("seta", Cvar_SetA_f, "create or change the value of a console variable that will be saved to config.cfg");
+#ifdef FILLALLCVARSWITHRUBBISH
+       Cmd_AddCommand ("fillallcvarswithrubbish", Cvar_FillAll_f, "fill all cvars with a specified number of characters to provoke buffer overruns");
+#endif /* FILLALLCVARSWITHRUBBISH */
 
        // 2000-01-09 CmdList, CvarList commands By Matthias "Maddes" Buecher
        // Added/Modified by EvilTypeGuy eviltypeguy@qeradiant.com
@@ -1434,7 +1436,7 @@ void Cmd_CompleteCommandPrint (const char *partial)
        // Loop through the command list and print all matches
        for (cmd = cmd_functions; cmd; cmd = cmd->next)
                if (!strncasecmp(partial, cmd->name, len))
-                       Con_Printf("%s : %s\n", cmd->name, cmd->description);
+                       Con_Printf("^2%s^7: %s\n", cmd->name, cmd->description);
 }
 
 /*
@@ -1472,7 +1474,7 @@ void Cmd_CompleteAliasPrint (const char *partial)
        // Loop through the alias list and print all matches
        for (alias = cmd_alias; alias; alias = alias->next)
                if (!strncasecmp(partial, alias->name, len))
-                       Con_Printf("%s : %s\n", alias->name, alias->value);
+                       Con_Printf("^5%s^7: %s", alias->name, alias->value);
 }