From 4ed8a1931b4bf2331d9f79bc1f08576eb800c2ee Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 30 Nov 2010 21:56:03 +0100 Subject: Add support for deferred library loads to lib_init.c. --- src/lib_init.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/lib_init.c') diff --git a/src/lib_init.c b/src/lib_init.c index 04ca60d9..dd3a29af 100644 --- a/src/lib_init.c +++ b/src/lib_init.c @@ -11,7 +11,7 @@ #include "lauxlib.h" #include "lualib.h" -static const luaL_Reg lualibs[] = { +static const luaL_Reg lj_lib_load[] = { { "", luaopen_base }, { LUA_LOADLIBNAME, luaopen_package }, { LUA_TABLIBNAME, luaopen_table }, @@ -25,13 +25,24 @@ static const luaL_Reg lualibs[] = { { NULL, NULL } }; +static const luaL_Reg lj_lib_preload[] = { + { NULL, NULL } +}; + LUALIB_API void luaL_openlibs(lua_State *L) { - const luaL_Reg *lib = lualibs; - for (; lib->func; lib++) { + const luaL_Reg *lib; + for (lib = lj_lib_load; lib->func; lib++) { lua_pushcfunction(L, lib->func); lua_pushstring(L, lib->name); lua_call(L, 1, 0); } + luaL_findtable(L, LUA_REGISTRYINDEX, "_PRELOAD", + sizeof(lj_lib_preload)/sizeof(lj_lib_preload[0])-1); + for (lib = lj_lib_preload; lib->func; lib++) { + lua_pushcfunction(L, lib->func); + lua_setfield(L, -2, lib->name); + } + lua_pop(L, 1); } -- cgit v1.2.3-55-g6feb