Changeset 4316

Show
Ignore:
Timestamp:
03/09/09 23:19:47 (4 years ago)
Author:
Cyrus
Message:

nixio: Implement protable behaviour of signal(), export more error
constants

Location:
luci/trunk/libs/nixio/src
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • luci/trunk/libs/nixio/src/nixio.c

    r4297 r4316  
    131131 
    132132    /* some constants */ 
    133     lua_createtable(L, 0, 16); 
     133    lua_createtable(L, 0, 49); 
    134134 
    135135    NIXIO_PUSH_CONSTANT(EACCES); 
     
    141141    NIXIO_PUSH_CONSTANT(ENOMEM); 
    142142    NIXIO_PUSH_CONSTANT(ENOENT); 
     143    NIXIO_PUSH_CONSTANT(ECHILD); 
     144    NIXIO_PUSH_CONSTANT(EIO); 
     145    NIXIO_PUSH_CONSTANT(EBADF); 
     146    NIXIO_PUSH_CONSTANT(EFAULT); 
     147    NIXIO_PUSH_CONSTANT(EFBIG); 
     148    NIXIO_PUSH_CONSTANT(ENOSPC); 
     149    NIXIO_PUSH_CONSTANT(EPIPE); 
     150    NIXIO_PUSH_CONSTANT(ESPIPE); 
     151    NIXIO_PUSH_CONSTANT(EISDIR); 
     152    NIXIO_PUSH_CONSTANT(EPERM); 
     153    NIXIO_PUSH_CONSTANT(EEXIST); 
     154    NIXIO_PUSH_CONSTANT(ELOOP); 
     155    NIXIO_PUSH_CONSTANT(EMFILE); 
     156    NIXIO_PUSH_CONSTANT(ENAMETOOLONG); 
     157    NIXIO_PUSH_CONSTANT(ENFILE); 
     158    NIXIO_PUSH_CONSTANT(ENODEV); 
     159    NIXIO_PUSH_CONSTANT(ENOTDIR); 
     160    NIXIO_PUSH_CONSTANT(ENXIO); 
     161    NIXIO_PUSH_CONSTANT(EOVERFLOW); 
     162    NIXIO_PUSH_CONSTANT(EROFS); 
     163    NIXIO_PUSH_CONSTANT(ETXTBSY); 
     164    NIXIO_PUSH_CONSTANT(EAFNOSUPPORT); 
     165    NIXIO_PUSH_CONSTANT(ENOBUFS); 
     166    NIXIO_PUSH_CONSTANT(EPROTONOSUPPORT); 
     167    NIXIO_PUSH_CONSTANT(ENOPROTOOPT); 
     168    NIXIO_PUSH_CONSTANT(EBUSY); 
     169    NIXIO_PUSH_CONSTANT(ESRCH); 
    143170    NIXIO_PUSH_CONSTANT(SIGALRM); 
    144171    NIXIO_PUSH_CONSTANT(SIGINT); 
     
    149176    NIXIO_PUSH_CONSTANT(SIGCONT); 
    150177    NIXIO_PUSH_CONSTANT(SIGSEGV); 
     178    NIXIO_PUSH_CONSTANT(SIGCHLD); 
     179    NIXIO_PUSH_CONSTANT(SIGQUIT); 
     180    NIXIO_PUSH_CONSTANT(SIGUSR1); 
     181    NIXIO_PUSH_CONSTANT(SIGUSR2); 
     182    NIXIO_PUSH_CONSTANT(SIGPOLL); 
     183    NIXIO_PUSH_CONSTANT(SIGURG); 
    151184 
    152185    lua_setfield(L, -2, "const"); 
  • luci/trunk/libs/nixio/src/process.c

    r4315 r4316  
    3434        lua_pushinteger(L, pid); 
    3535        return 1; 
     36    } 
     37} 
     38 
     39static int nixio_signal(lua_State *L) { 
     40    int sig = luaL_checkinteger(L, 1); 
     41    const char *val = luaL_checkstring(L, 2); 
     42 
     43    if (!strcmp(val, "ign") || !strcmp(val, "ignore")) { 
     44        return nixio__pstatus(L, signal(sig, SIG_IGN) != SIG_ERR); 
     45    } else if (!strcmp(val, "dfl") || !strcmp(val, "default")) { 
     46        return nixio__pstatus(L, signal(sig, SIG_DFL) != SIG_ERR); 
     47    } else { 
     48        return luaL_argerror(L, 2, "supported values: ign, dfl"); 
    3649    } 
    3750} 
     
    149162    {"setuid",      nixio_setuid}, 
    150163    {"setgid",      nixio_setgid}, 
     164    {"signal",      nixio_signal}, 
    151165    {NULL,          NULL} 
    152166};