summaryrefslogtreecommitdiffstats
path: root/lem/signal/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'lem/signal/core.c')
-rw-r--r--lem/signal/core.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/lem/signal/core.c b/lem/signal/core.c
index c5e297d..dacf4ea 100644
--- a/lem/signal/core.c
+++ b/lem/signal/core.c
@@ -239,7 +239,7 @@ signal_child_unwatch(lua_State *T)
#endif
static int
-signal_lookup(lua_State *T)
+signal_tonumber(lua_State *T)
{
const char *needle = luaL_checkstring(T, 1);
@@ -257,6 +257,24 @@ signal_lookup(lua_State *T)
}
static int
+signal_tostring(lua_State *T)
+{
+ int needle = luaL_checkint(T, 1);
+
+ unsigned int i;
+
+ for (i = 0; i < ARRAYLEN(sigmap); i++) {
+ struct signal_mapping *sig = &sigmap[i];
+ if (sig->no == needle) {
+ lua_pushstring(T, sig->name);
+ return 1;
+ }
+ }
+ lua_pushnil(T);
+ return 1;
+}
+
+static int
signal_sethandler(lua_State *T)
{
int type;
@@ -318,9 +336,12 @@ luaopen_lem_signal_core(lua_State *T)
/* create module table */
lua_newtable(T);
- /* set lookup function */
- lua_pushcfunction(T, signal_lookup);
- lua_setfield(T, -2, "lookup");
+ /* set tonumber function */
+ lua_pushcfunction(T, signal_tonumber);
+ lua_setfield(T, -2, "tonumber");
+ /* set tostring function */
+ lua_pushcfunction(T, signal_tostring);
+ lua_setfield(T, -2, "tostring");
/* set sethandler function */
lua_pushcfunction(T, signal_sethandler);
lua_setfield(T, -2, "sethandler");