--- configure.orig 2008-06-21 00:20:03.000000000 +0400 +++ configure 2008-07-06 13:27:54.943891435 +0400 @@ -17623,7 +17623,7 @@ for luadir in "$withval" "" /usr /usr/local; do for suffix in "" 50; do if test "$cf_result" = no; then - LUA_LIBS="-llua$suffix -llualib$suffix -lm" + LUA_LIBS="-llua$suffix -lm" if test ! -z "$luadir"; then LUA_LIBS="-L$luadir/lib $LUA_LIBS" --- src/scripting/lua/core.c.orig Sun Jan 29 08:10:39 2006 +++ src/scripting/lua/core.c Thu Oct 19 14:10:34 2006 @@ -633,7 +633,7 @@ do_hooks_file(LS, unsigned char *prefix, if (file_can_read(file)) { int oldtop = lua_gettop(S); - if (lua_dofile(S, file) != 0) + if (luaL_dofile(S, file) != 0) sleep(3); /* Let some time to see error messages. */ lua_settop(S, oldtop); } @@ -644,13 +644,24 @@ do_hooks_file(LS, unsigned char *prefix, void init_lua(struct module *module) { + static const luaL_Reg lualibs[] = { + {"", luaopen_base}, + {LUA_TABLIBNAME, luaopen_table}, + {LUA_IOLIBNAME, luaopen_io}, + {LUA_OSLIBNAME, luaopen_os}, + {LUA_STRLIBNAME, luaopen_string}, + {LUA_MATHLIBNAME, luaopen_math}, + {NULL, NULL} + }; + const luaL_Reg *lib = lualibs; + L = lua_open(); - luaopen_base(L); - luaopen_table(L); - luaopen_io(L); - luaopen_string(L); - luaopen_math(L); + for (; lib->func; lib++) { + lua_pushcfunction(L, lib->func); + lua_pushstring(L, lib->name); + lua_call(L, 1, 0); + } lua_register(L, LUA_ALERT, l_alert); lua_register(L, "current_url", l_current_url); @@ -755,7 +766,7 @@ handle_ret_eval(struct session *ses) int oldtop = lua_gettop(L); if (prepare_lua(ses) == 0) { - lua_dostring(L, expr); + luaL_dostring(L, expr); lua_settop(L, oldtop); finish_lua(); } --- src/scripting/lua/hooks.c.orig Thu Oct 19 12:54:09 2006 +++ src/scripting/lua/hooks.c Thu Oct 19 12:54:25 2006 @@ -200,7 +200,7 @@ static enum evhook_status script_hook_quit(va_list ap, void *data) { if (!prepare_lua(NULL)) { - lua_dostring(lua_state, "if quit_hook then quit_hook() end"); + luaL_dostring(lua_state, "if quit_hook then quit_hook() end"); finish_lua(); } .