# HG changeset patch # User Tero Marttila # Date 1242914276 -10800 # Node ID f0e52e026197e8da99b3195bfda7cbf2fa2fbc78 # Parent ddc79529a1e0d5cde2b69d4cdd7d1eb6741495cd implement lua_console_on_interrupt to abort any executing thread diff -r ddc79529a1e0 -r f0e52e026197 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)