diff options
author | Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz> | 2013-09-18 18:51:02 +0000 |
---|---|---|
committer | Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz> | 2013-11-06 13:35:46 +0000 |
commit | 9c6207b456cd0d2713d4b8c499d4278c809b80bc (patch) | |
tree | d6133010fa49610e1571116620dd50c158342ab6 /lem/signal/core.c | |
parent | 9821a1e344e919e4f50bd0a8236c68de9483913d (diff) | |
download | lem-9c6207b456cd0d2713d4b8c499d4278c809b80bc.tar.gz lem-9c6207b456cd0d2713d4b8c499d4278c809b80bc.tar.xz lem-9c6207b456cd0d2713d4b8c499d4278c809b80bc.zip |
signal: add support for looking up signals by number
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz>
Signed-off-by: Emil Renner Berthing <esmil@mailme.dk>
Diffstat (limited to 'lem/signal/core.c')
-rw-r--r-- | lem/signal/core.c | 29 |
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"); |