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.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/engine/e_console.c b/src/engine/e_console.c
index db0398b4..27add750 100644
--- a/src/engine/e_console.c
+++ b/src/engine/e_console.c
@@ -1,6 +1,7 @@
 #include "e_system.h"
 #include "e_console.h"
 #include "e_config.h"
+#include "e_linereader.h"
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -339,7 +340,7 @@ void console_print(const char *str)
 		print_callback(str);
 }
 
-void console_execute(const char *str)
+void console_execute_line(const char *str)
 {
 	LEXER_RESULT result;
 	int error;
@@ -374,6 +375,28 @@ void console_execute(const char *str)
 	}
 }
 
+void console_execute_file(const char *filename)
+{
+	IOHANDLE file;
+	file = io_open(filename, IOFLAG_READ);
+	
+	if(file)
+	{
+		char *line;
+		LINEREADER lr;
+		
+		dbg_msg("console", "executing '%s'", filename);
+		linereader_init(&lr, file);
+
+		while((line = linereader_get(&lr)))
+			console_execute_line(line);
+
+		io_close(file);
+	}
+	else
+		dbg_msg("console", "failed to open '%s'", filename);
+}
+
 static void echo_command(void *result, void *user_data)
 {
 	const char *str;