util-src/pposix.c
changeset 2438 819ba949c7bc
parent 2437 b1ba2473fd91
child 2441 d72078946a16
equal deleted inserted replaced
2437:b1ba2473fd91 2438:819ba949c7bc
    11 /*
    11 /*
    12 * pposix.c
    12 * pposix.c
    13 * POSIX support functions for Lua
    13 * POSIX support functions for Lua
    14 */
    14 */
    15 
    15 
    16 #define MODULE_VERSION "0.3.1"
    16 #define MODULE_VERSION "0.3.2"
    17 
    17 
    18 #include <stdlib.h>
    18 #include <stdlib.h>
       
    19 #include <math.h>
    19 #include <unistd.h>
    20 #include <unistd.h>
    20 #include <libgen.h>
    21 #include <libgen.h>
    21 #include <sys/resource.h>
    22 #include <sys/resource.h>
    22 #include <sys/types.h>
    23 #include <sys/types.h>
    23 #include <sys/stat.h>
    24 #include <sys/stat.h>
   356 	lua_pushboolean(L, 0);
   357 	lua_pushboolean(L, 0);
   357 	lua_pushstring(L, "invalid-gid");
   358 	lua_pushstring(L, "invalid-gid");
   358 	return 2;
   359 	return 2;
   359 }
   360 }
   360 
   361 
       
   362 int lc_umask(lua_State* L)
       
   363 {
       
   364 	char old_mode_string[7];
       
   365 	mode_t old_mode = umask(strtoul(luaL_checkstring(L, 1), NULL, 8));
       
   366 
       
   367 	snprintf(old_mode_string, sizeof(old_mode_string), "%03o", old_mode);
       
   368 	old_mode_string[sizeof(old_mode_string)-1] = 0;
       
   369 	lua_pushstring(L, old_mode_string);
       
   370 
       
   371 	return 1;
       
   372 }
       
   373 
   361 /*	Like POSIX's setrlimit()/getrlimit() API functions.
   374 /*	Like POSIX's setrlimit()/getrlimit() API functions.
   362  *
   375  *
   363  *	Syntax:
   376  *	Syntax:
   364  *	pposix.setrlimit( resource, soft limit, hard limit)
   377  *	pposix.setrlimit( resource, soft limit, hard limit)
   365  *
   378  *
   504 	lua_pushcfunction(L, lc_setuid);
   517 	lua_pushcfunction(L, lc_setuid);
   505 	lua_setfield(L, -2, "setuid");
   518 	lua_setfield(L, -2, "setuid");
   506 	lua_pushcfunction(L, lc_setgid);
   519 	lua_pushcfunction(L, lc_setgid);
   507 	lua_setfield(L, -2, "setgid");
   520 	lua_setfield(L, -2, "setgid");
   508 
   521 
       
   522 	lua_pushcfunction(L, lc_umask);
       
   523 	lua_setfield(L, -2, "umask");
       
   524 
   509 	lua_pushcfunction(L, lc_setrlimit);
   525 	lua_pushcfunction(L, lc_setrlimit);
   510 	lua_setfield(L, -2, "setrlimit");
   526 	lua_setfield(L, -2, "setrlimit");
   511 
   527 
   512 	lua_pushcfunction(L, lc_getrlimit);
   528 	lua_pushcfunction(L, lc_getrlimit);
   513 	lua_setfield(L, -2, "getrlimit");
   529 	lua_setfield(L, -2, "getrlimit");