-*/
-
-static int l_signal(lua_State *L)
-{
- int args = lua_gettop(L);
- int t, sig; /* type, signal */
-
- /* get type of signal */
- luaL_checkany(L, 1);
- t = lua_type(L, 1);
- if (t == LUA_TNUMBER)
- sig = (int) lua_tonumber(L, 1);
- else if (t == LUA_TSTRING)
- {
- lua_pushstring(L, LUA_SIGNAL);
- lua_gettable(L, LUA_REGISTRYINDEX);
- lua_pushvalue(L, 1);
- lua_gettable(L, -2);
- if (!lua_isnumber(L, -1))
- luaL_error(L, "invalid signal string");
- sig = (int) lua_tonumber(L, -1);
- lua_pop(L, 1); /* get rid of number we pushed */
- } else
- luaL_checknumber(L, 1); /* will always error, with good error msg */
-
- /* set handler */
- if (args == 1 || lua_isnil(L, 2)) /* clear handler */
- {
- lua_pushstring(L, LUA_SIGNAL);
- lua_gettable(L, LUA_REGISTRYINDEX);
- lua_pushnumber(L, sig);
- lua_gettable(L, -2); /* return old handler */
- lua_pushnumber(L, sig);
- lua_pushnil(L);
- lua_settable(L, -4);
- lua_remove(L, -2); /* remove LUA_SIGNAL table */
- signal(sig, SIG_DFL);
- } else
- {
- luaL_checktype(L, 2, LUA_TFUNCTION);
-
- lua_pushstring(L, LUA_SIGNAL);
- lua_gettable(L, LUA_REGISTRYINDEX);
-
- lua_pushnumber(L, sig);
- lua_pushvalue(L, 2);
- lua_settable(L, -3);
-
- /* Set the state for the handler */
- Lsig = L;
-
- if (lua_toboolean(L, 3)) /* c hook? */
- {
- if (signal(sig, handle) == SIG_ERR)
- lua_pushboolean(L, 0);
- else
- lua_pushboolean(L, 1);
- } else /* lua_hook */
- {
- if (signal(sig, handle) == SIG_ERR)
- lua_pushboolean(L, 0);
- else
- lua_pushboolean(L, 1);
- }
- }
- return 1;
+*/
+
+static int l_signal(lua_State* L) {
+ int args = lua_gettop(L);
+ int t, sig; /* type, signal */
+
+ /* get type of signal */
+ luaL_checkany(L, 1);
+ t = lua_type(L, 1);
+
+ if(t == LUA_TNUMBER) {
+ sig = (int) lua_tonumber(L, 1);
+ } else if(t == LUA_TSTRING) {
+ lua_pushstring(L, LUA_SIGNAL);
+ lua_gettable(L, LUA_REGISTRYINDEX);
+ lua_pushvalue(L, 1);
+ lua_gettable(L, -2);
+
+ if(!lua_isnumber(L, -1)) {
+ return luaL_error(L, "invalid signal string");
+ }
+
+ sig = (int) lua_tonumber(L, -1);
+ lua_pop(L, 1); /* get rid of number we pushed */
+ } else {
+ luaL_checknumber(L, 1); /* will always error, with good error msg */
+ return luaL_error(L, "unreachable: invalid number was accepted");
+ }
+
+ /* set handler */
+ if(args == 1 || lua_isnil(L, 2)) { /* clear handler */
+ lua_pushstring(L, LUA_SIGNAL);
+ lua_gettable(L, LUA_REGISTRYINDEX);
+ lua_pushnumber(L, sig);
+ lua_gettable(L, -2); /* return old handler */
+ lua_pushnumber(L, sig);
+ lua_pushnil(L);
+ lua_settable(L, -4);
+ lua_remove(L, -2); /* remove LUA_SIGNAL table */
+ signal(sig, SIG_DFL);
+ } else {
+ luaL_checktype(L, 2, LUA_TFUNCTION);
+
+ lua_pushstring(L, LUA_SIGNAL);
+ lua_gettable(L, LUA_REGISTRYINDEX);
+
+ lua_pushnumber(L, sig);
+ lua_pushvalue(L, 2);
+ lua_settable(L, -3);
+
+ /* Set the state for the handler */
+ Lsig = L;
+
+ if(lua_toboolean(L, 3)) { /* c hook? */
+ if(signal(sig, handle) == SIG_ERR) {
+ lua_pushboolean(L, 0);
+ } else {
+ lua_pushboolean(L, 1);
+ }
+ } else { /* lua_hook */
+ if(signal(sig, handle) == SIG_ERR) {
+ lua_pushboolean(L, 0);
+ } else {
+ lua_pushboolean(L, 1);
+ }
+ }
+ }
+
+ return 1;