about summary refs log tree commit diff
path: root/src/engine/e_console.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2009-01-24 12:16:02 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2009-01-24 12:16:02 +0000
commit9d51d47cea8f56dc5d33a6204bdacd67f0acd902 (patch)
tree80c1bf4aae727d200e5b2ad71ccca54f5c999679 /src/engine/e_console.c
parent1a1af65b96a9ab0c757a40acbbbd5347fec4663f (diff)
downloadzcatch-9d51d47cea8f56dc5d33a6204bdacd67f0acd902.tar.gz
zcatch-9d51d47cea8f56dc5d33a6204bdacd67f0acd902.zip
added tab completion to the console. works for local and remote
Diffstat (limited to 'src/engine/e_console.c')
-rw-r--r--src/engine/e_console.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/engine/e_console.c b/src/engine/e_console.c
index 1c68c2e7..0218bad0 100644
--- a/src/engine/e_console.c
+++ b/src/engine/e_console.c
@@ -292,6 +292,19 @@ void console_execute_line_stroked(int stroke, const char *str)
 	}
 }
 
+void console_possible_commands(const char *str, int flagmask, void (*callback)(const char *cmd, void *user), void *user)
+{
+	COMMAND *cmd;
+	for (cmd = first_command; cmd; cmd = cmd->next)
+	{
+		if(cmd->flags&flagmask)
+		{
+			if(str_find_nocase(cmd->name, str))
+				callback(cmd->name, user);
+		}
+	}	
+}
+
 void console_execute_line(const char *str)
 {
 	console_execute_line_stroked(1, str);
@@ -319,18 +332,18 @@ static void console_execute_file_real(const char *filename)
 		dbg_msg("console", "failed to open '%s'", filename);
 }
 
-struct exec_file
+struct EXECFILE
 {
 	const char *filename;
-	struct exec_file *next;
+	struct EXECFILE *next;
 };
 
 void console_execute_file(const char *filename)
 {
-	static struct exec_file *first = 0;
-	struct exec_file this;
-	struct exec_file *cur;
-	struct exec_file *prev;
+	static struct EXECFILE *first = 0;
+	struct EXECFILE this;
+	struct EXECFILE *cur;
+	struct EXECFILE *prev;
 
 	/* make sure that this isn't being executed already */	
 	for(cur = first; cur; cur = cur->next)
@@ -404,11 +417,11 @@ static void str_variable_command(void *result, void *user_data)
 
 void console_init()
 {
-	MACRO_REGISTER_COMMAND("echo", "r", con_echo, 0x0);
-	MACRO_REGISTER_COMMAND("exec", "r", con_exec, 0x0);
+	MACRO_REGISTER_COMMAND("echo", "r", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_echo, 0x0);
+	MACRO_REGISTER_COMMAND("exec", "r", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_exec, 0x0);
 
-	#define MACRO_CONFIG_INT(name,def,min,max,flags,desc) { static INT_VARIABLE_DATA data = { &config_get_ ## name, &config_set_ ## name }; MACRO_REGISTER_COMMAND(#name, "?i", int_variable_command, &data) }
-	#define MACRO_CONFIG_STR(name,len,def,flags,desc) { static STR_VARIABLE_DATA data = { &config_get_ ## name, &config_set_ ## name }; MACRO_REGISTER_COMMAND(#name, "?r", str_variable_command, &data) }
+	#define MACRO_CONFIG_INT(name,def,min,max,flags,desc) { static INT_VARIABLE_DATA data = { &config_get_ ## name, &config_set_ ## name }; MACRO_REGISTER_COMMAND(#name, "?i", flags, int_variable_command, &data) }
+	#define MACRO_CONFIG_STR(name,len,def,flags,desc) { static STR_VARIABLE_DATA data = { &config_get_ ## name, &config_set_ ## name }; MACRO_REGISTER_COMMAND(#name, "?r", flags, str_variable_command, &data) }
 
 	#include "e_config_variables.h"