static int Pchmod(lua_State *L) /** chmod(path,mode) */ { mode_t mode; struct stat s; const char *path = luaL_checkstring(L, 1); const char *modestr = luaL_checkstring(L, 2); if (stat(path, &s)) return pusherror(L, path); mode = s.st_mode; if (mode_munch(&mode, modestr)) luaL_argerror(L, 2, "bad mode"); return pushresult(L, chmod(path, mode), path); }
static int Pumask(lua_State *L) /** umask([mode]) */ { mode_t mode; umask(mode=umask(0)); mode=(~mode)&0777; if (!lua_isnone(L, 1)) { if (mode_munch(&mode, luaL_checkstring(L, 1))) { lua_pushnil(L); return 1; } mode&=0777; umask(~mode); } pushmode(L, mode); return 1; }