From b7622621b6a9a2e03c14b3e0c5986f7bc29d1dae Mon Sep 17 00:00:00 2001 From: jluehrs2 Date: Tue, 9 Oct 2007 00:41:49 -0500 Subject: implement kill() and raise() --- src/signal.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/signal.c b/src/signal.c index a52c4b4..d661ec2 100644 --- a/src/signal.c +++ b/src/signal.c @@ -126,11 +126,54 @@ static int l_alarm(lua_State* L) return 1; } +static int l_kill(lua_State* L) +{ + const char* signame; + int pid, sig; + + pid = luaL_checkint(L, -1); + signame = luaL_checklstring(L, -2, NULL); + if ((sig = name_to_sig(signame)) == -1) { + if (strcmp(signame, "test") == 0) { + sig = 0; + } + else { + lua_pushstring(L, "kill(): invalid signal name"); + lua_error(L); + } + } + + lua_pushinteger(L, kill(pid, sig)); + + return 1; +} + +static int l_raise(lua_State* L) +{ + const char* signame; + int sig; + + signame = luaL_checklstring(L, -1, NULL); + if ((sig = name_to_sig(signame)) == -1) { + if (strcmp(signame, "test") == 0) { + sig = 0; + } + else { + lua_pushstring(L, "raise(): invalid signal name"); + lua_error(L); + } + } + + lua_pushinteger(L, raise(sig)); + + return 1; +} + const luaL_Reg reg[] = { { "signal", l_signal }, { "alarm", l_alarm }, - /*{ "kill", l_kill },*/ - /*{ "raise", l_raise },*/ + { "kill", l_kill }, + { "raise", l_raise }, /*{ "suspend", l_suspend },*/ /*{ "block", l_block },*/ { NULL, NULL }, -- cgit v1.2.3