summaryrefslogtreecommitdiffstats
path: root/utils/hwstub/tools
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2013-07-13 17:38:58 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2013-07-13 17:47:01 +0200
commit7827b7ccdbfd639a0c49052ec7c94ae29c50f2ea (patch)
tree6869465be5fa16e3efe3a33301149dd80aa7be9d /utils/hwstub/tools
parentf617da0552c95202807c5e41c70bc78a3189378e (diff)
downloadrockbox-7827b7ccdbfd639a0c49052ec7c94ae29c50f2ea.tar.gz
rockbox-7827b7ccdbfd639a0c49052ec7c94ae29c50f2ea.tar.bz2
rockbox-7827b7ccdbfd639a0c49052ec7c94ae29c50f2ea.zip
hwstub: allow to escape shell with a function call
Change-Id: I65b7b230d3b89a5014db134d3159861474fd889f
Diffstat (limited to 'utils/hwstub/tools')
-rw-r--r--utils/hwstub/tools/hwstub_shell.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/utils/hwstub/tools/hwstub_shell.cpp b/utils/hwstub/tools/hwstub_shell.cpp
index 69e580f88e..86824b680c 100644
--- a/utils/hwstub/tools/hwstub_shell.cpp
+++ b/utils/hwstub/tools/hwstub_shell.cpp
@@ -37,6 +37,7 @@
* Global variables
*/
bool g_quiet = false;
+bool g_exit = false;
struct hwstub_device_t g_hwdev;
struct usb_resp_info_version_t g_hwdev_ver;
struct usb_resp_info_layout_t g_hwdev_layout;
@@ -210,6 +211,12 @@ int my_lua_printlog(lua_State *state)
return 0;
}
+int my_lua_exit(lua_State *state)
+{
+ g_exit = true;
+ return 0;
+}
+
bool my_lua_import_hwstub()
{
int oldtop = lua_gettop(g_lua);
@@ -340,6 +347,12 @@ bool my_lua_import_hwstub()
lua_pushcfunction(g_lua, my_lua_help);
lua_setglobal(g_lua, "help");
+ lua_pushcfunction(g_lua, my_lua_exit);
+ lua_setglobal(g_lua, "exit");
+
+ lua_pushcfunction(g_lua, my_lua_exit);
+ lua_setglobal(g_lua, "quit");
+
if(lua_gettop(g_lua) != oldtop)
{
printf("internal error: unbalanced my_lua_import_soc");
@@ -824,7 +837,7 @@ int main(int argc, char **argv)
// use readline to provide some history and completion
rl_bind_key('\t', rl_complete);
- while(1)
+ while(!g_exit)
{
char *input = readline("> ");
if(!input)