summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/BLua.cc39
1 files changed, 30 insertions, 9 deletions
diff --git a/lib/BLua.cc b/lib/BLua.cc
index 0a763aa..ba5497a 100644
--- a/lib/BLua.cc
+++ b/lib/BLua.cc
@@ -545,6 +545,7 @@ Lua::Lua(const Lua & l) throw (GeneralException) {
}
void Lua::open_base() {
+ int n = gettop();
luaopen_base(L);
push("mkdir");
push(LuaStatics::mkdir);
@@ -552,7 +553,19 @@ void Lua::open_base() {
push("time");
push(LuaStatics::time);
settable();
- lua_pop(L, 1);
+ push("getenv");
+ push(LuaStatics::getenv);
+ settable();
+ push("setenv");
+ push(LuaStatics::setenv);
+ settable();
+ push("unsetenv");
+ push(LuaStatics::unsetenv);
+ settable();
+ push("sleep");
+ push(LuaStatics::sleep);
+ settable();
+ for (remove(n); n <= gettop(); remove(n));
push("mkdir");
push(LuaStatics::mkdir);
settable(LUA_GLOBALSINDEX);
@@ -574,31 +587,36 @@ void Lua::open_base() {
}
void Lua::open_table() {
+ int n = gettop();
luaopen_table(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_io(bool safe) {
+ int n = gettop();
luaopen_io(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_string() {
+ int n = gettop();
luaopen_string(L);
push("iconv");
push(LuaStatics::iconv);
settable();
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_math() {
+ int n = gettop();
luaopen_math(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_debug() {
+ int n = gettop();
luaopen_debug(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
extern "C" {
@@ -606,18 +624,21 @@ LUALIB_API int (luaopen_dir) (lua_State *L);
}
void Lua::open_dir() {
+ int n = gettop();
luaopen_dir(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_jit() {
+ int n = gettop();
luaopen_jit(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::open_bit() {
+ int n = gettop();
luaopen_bit(L);
- lua_pop(L, 1);
+ for (remove(n); n <= gettop(); remove(n));
}
void Lua::declarefunc(const String & name, lua_CFunction f, int i) {