about summary refs log tree commit diff
path: root/src/engine/e_console.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/e_console.c')
-rw-r--r--src/engine/e_console.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/engine/e_console.c b/src/engine/e_console.c
index 0f6e6acd..5c0f37f3 100644
--- a/src/engine/e_console.c
+++ b/src/engine/e_console.c
@@ -428,6 +428,27 @@ static void str_variable_command(void *result, void *user_data)
 	}
 }
 
+static void console_chain(void *result, void *user_data)
+{
+	COMMANDCHAIN *info = (COMMANDCHAIN *)user_data;
+	info->chain_callback(result, info->user_data, info->callback, info->callback_user_data);
+}
+
+void console_chain_command(const char *cmd, COMMANDCHAIN *chaininfo, CONSOLE_CHAIN_CALLBACK cb, void *user)
+{
+	COMMAND *command = console_get_command(cmd);
+
+	/* store info */
+	chaininfo->chain_callback = cb;
+	chaininfo->callback = command->callback;
+	chaininfo->callback_user_data = command->user_data;
+	chaininfo->user_data = user;
+	
+	/* chain */
+	command->callback = console_chain;
+	command->user_data = chaininfo;
+}
+
 void console_init()
 {
 	MACRO_REGISTER_COMMAND("echo", "r", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_echo, 0x0, "Echo the text");