changeset 15836:6012380bb7e1 draft

(svn r20515) -Feature: ignore _ in console command names so there is no "inconsistent" behaviour w.r.t. underscores anymore without breaking backwards compatability greatly
author rubidium <rubidium@openttd.org>
date Mon, 16 Aug 2010 15:18:21 +0000
parents 922e8bd07296
children 9a6c217229fb
files src/console.cpp src/console_cmds.cpp
diffstat 2 files changed, 18 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/console.cpp
+++ b/src/console.cpp
@@ -224,6 +224,21 @@
 }
 
 /**
+ * Remove underscores from a string; the string will be modified!
+ * @param name The string to remove the underscores from.
+ * @return #name.
+ */
+char *RemoveUnderscores(char *name)
+{
+	char *q = name;
+	for (const char *p = name; *p != '\0'; p++) {
+		if (*p != '_') *q++ = *p;
+	}
+	*q = '\0';
+	return name;
+}
+
+/**
  * Register a new command to be used in the console
  * @param name name of the command that will be used
  * @param proc function that will be called upon execution of command
@@ -231,7 +246,7 @@
 void IConsoleCmdRegister(const char *name, IConsoleCmdProc *proc, IConsoleHook *hook)
 {
 	IConsoleCmd *item_new = MallocT<IConsoleCmd>(1);
-	item_new->name = strdup(name);
+	item_new->name = RemoveUnderscores(strdup(name));
 	item_new->next = NULL;
 	item_new->proc = proc;
 	item_new->hook = hook;
@@ -266,7 +281,7 @@
 		return;
 	}
 
-	char *new_alias = strdup(name);
+	char *new_alias = RemoveUnderscores(strdup(name));
 	char *cmd_aliased = strdup(cmd);
 	IConsoleAlias *item_new = MallocT<IConsoleAlias>(1);
 
@@ -467,6 +482,7 @@
 	 * First try commands, then aliases. Execute
 	 * the found action taking into account its hooking code
 	 */
+	RemoveUnderscores(tokens[0]);
 	IConsoleCmd *cmd = IConsoleCmdGet(tokens[0]);
 	if (cmd != NULL) {
 		ConsoleHookResult chr = (cmd->hook == NULL ? CHR_ALLOW : cmd->hook(true));
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1767,8 +1767,6 @@
 	IConsoleAliasRegister("dir",          "ls");
 	IConsoleAliasRegister("del",          "rm %+");
 	IConsoleAliasRegister("newmap",       "newgame");
-	IConsoleAliasRegister("new_map",      "newgame");
-	IConsoleAliasRegister("new_game",     "newgame");
 	IConsoleAliasRegister("patch",        "setting %+");
 	IConsoleAliasRegister("set",          "setting %+");
 	IConsoleAliasRegister("set_newgame",  "setting_newgame %+");