return luaL_error(L, "stack overflow");
}
- if (!lua_type(L, -2) != LUA_TSTRING || !lua_isstring(L, -1)) {
+ if (lua_type(L, -2) != LUA_TSTRING || !lua_isstring(L, -1)) {
return luaL_argerror(L, 3, "invalid environment");
}
lua_pushfstring(L, "%s=%s",
lua_tostring(L, -2), lua_tostring(L, -1));
- lua_insert(L, 4);
+ lua_insert(L, 5);
lua_pop(L, 1);
argn++;
}
char **env = lua_newuserdata(L, sizeof(char*) * (argn + 1));
env[argn] = NULL;
- for (i = 1; i < argn; i++) {
- env[i-1] = (char *)lua_tostring(L, -i);
+ for (i = 1; i <= argn; i++) {
+ env[i-1] = (char *)lua_tostring(L, -(i+1));
}
execve(path, args, env);
return nixio__perror(L);
} else {
lua_createtable(L, 0, 4);
- lua_pushinteger(L, buf.tms_cstime);
+ nixio__pushnumber(L, buf.tms_cstime);
lua_setfield(L, -2, "cstime");
- lua_pushinteger(L, buf.tms_cutime);
+ nixio__pushnumber(L, buf.tms_cutime);
lua_setfield(L, -2, "cutime");
- lua_pushinteger(L, buf.tms_stime);
+ nixio__pushnumber(L, buf.tms_stime);
lua_setfield(L, -2, "stime");
- lua_pushinteger(L, buf.tms_utime);
+ nixio__pushnumber(L, buf.tms_utime);
lua_setfield(L, -2, "utime");
return 1;
lua_createtable(L, 0, 12);
- lua_pushinteger(L, info.bufferram);
+ nixio__pushnumber(L, info.bufferram);
lua_setfield(L, -2, "bufferram");
- lua_pushinteger(L, info.freehigh);
+ nixio__pushnumber(L, info.freehigh);
lua_setfield(L, -2, "freehigh");
- lua_pushinteger(L, info.freeram);
+ nixio__pushnumber(L, info.freeram);
lua_setfield(L, -2, "freeram");
- lua_pushinteger(L, info.freeswap);
+ nixio__pushnumber(L, info.freeswap);
lua_setfield(L, -2, "freeswap");
lua_createtable(L, 0, 3);
lua_pushinteger(L, info.procs);
lua_setfield(L, -2, "procs");
- lua_pushinteger(L, info.sharedram);
+ nixio__pushnumber(L, info.sharedram);
lua_setfield(L, -2, "sharedram");
- lua_pushinteger(L, info.totalhigh);
+ nixio__pushnumber(L, info.totalhigh);
lua_setfield(L, -2, "totalhigh");
- lua_pushinteger(L, info.totalram);
+ nixio__pushnumber(L, info.totalram);
lua_setfield(L, -2, "totalram");
- lua_pushinteger(L, info.totalswap);
+ nixio__pushnumber(L, info.totalswap);
lua_setfield(L, -2, "totalswap");
lua_pushinteger(L, info.uptime);