implement lua_console_on_interrupt to abort any executing thread
authorTero Marttila <terom@fixme.fi>
Thu, 21 May 2009 16:57:56 +0300
changeset 213 f0e52e026197
parent 212 ddc79529a1e0
child 214 0d5d46ab49d5
implement lua_console_on_interrupt to abort any executing thread
src/lua_console.c
--- a/src/lua_console.c	Thu May 21 16:57:28 2009 +0300
+++ b/src/lua_console.c	Thu May 21 16:57:56 2009 +0300
@@ -71,9 +71,24 @@
     nexus_shutdown(lc->lua->nexus);
 }
 
+static void lua_console_on_interrupt (void *arg)
+{
+    struct lua_console *lc = arg;
+
+    // abort thread so we can _start again
+    lua_thread_abort(&lc->thread);
+
+    // inform user
+    console_print(lc->console, "Execution aborted.");
+    
+    // accept input
+    console_continue(lc->console);
+}
+
 static struct console_callbacks _console_callbacks = {
-    .on_line    = lua_console_on_line,
-    .on_eof     = lua_console_on_eof,
+    .on_line        = lua_console_on_line,
+    .on_eof         = lua_console_on_eof,
+    .on_interrupt   = lua_console_on_interrupt,
 };
 
 err_t lua_console_create (struct lua_console **lc_ptr, struct console *console, struct nexus_lua *lua, struct error_info *err)