summaryrefslogtreecommitdiff
path: root/apps/plugins
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2009-07-23 00:54:35 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2009-07-23 00:54:35 +0000
commit1fde0dd8e4524a60e72419bcb732e8a96d94c3e5 (patch)
treebd4966589036feecf24f40280dbb5177bc0dd0f5 /apps/plugins
parent07a6aac401ab28c4beb066072d7e6786148fd57a (diff)
downloadrockbox-1fde0dd8e4524a60e72419bcb732e8a96d94c3e5.zip
rockbox-1fde0dd8e4524a60e72419bcb732e8a96d94c3e5.tar.gz
rockbox-1fde0dd8e4524a60e72419bcb732e8a96d94c3e5.tar.bz2
rockbox-1fde0dd8e4524a60e72419bcb732e8a96d94c3e5.tar.xz
Lua: return nil when kbd_input() gets aborted and make it possible to preset the input string (based on FS#10455 by Christophe Gragnic)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22008 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/lua/rocklib.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c
index d6159e0..c6b399c 100644
--- a/apps/plugins/lua/rocklib.c
+++ b/apps/plugins/lua/rocklib.c
@@ -394,12 +394,22 @@ RB_WRAP(kbd_input)
luaL_Buffer b;
luaL_buffinit(L, &b);
+ const char *input = luaL_optstring(L, 1, NULL);
char *buffer = luaL_prepbuffer(&b);
- buffer[0] = '\0';
- rb->kbd_input(buffer, LUAL_BUFFERSIZE);
- luaL_addsize(&b, strlen(buffer));
- luaL_pushresult(&b);
+ if(input != NULL)
+ rb->strlcpy(buffer, input, LUAL_BUFFERSIZE);
+ else
+ buffer[0] = '\0';
+
+ if(!rb->kbd_input(buffer, LUAL_BUFFERSIZE))
+ {
+ luaL_addsize(&b, strlen(buffer));
+ luaL_pushresult(&b);
+ }
+ else
+ lua_pushnil(L);
+
return 1;
}