lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Mon, Apr 16, 2007 at 04:11:33PM -0400, Jerome Vuarand wrote:
> Alexey Tourbin wrote:
> > What is wrong with the following code?
> > 
> > #include <lua.h>
> > #include <lualib.h>
> > #include <lauxlib.h>
> > int main()
> > {
> >         lua_State *L = lua_open();
> >         luaopen_base(L);
> >         luaopen_table(L);
> >         luaopen_io(L);
> >         luaopen_string(L);
> >         luaopen_math(L);
> >         return 0;
> > }
> > 
> > [...]
> > 
> > lua-5.1.2
> 
> Manual, section 7.3:
> 
> http://www.lua.org/manual/5.1/manual.html#7.3
> 
> "The luaopen_* functions (to open libraries) cannot be called directly,
> like a regular C function. They must be called through Lua, like a Lua
> function."

Thanks.  Actually I'm trying to fix the ELinks web browser code.
I guess using luaL_openlibs() is just okay, but it probably requires
lua >= 5.1.

commit 8c4596096c122cc9fa2eba1e35f7e13f0b69039c
Author: Alexey Tourbin <at@altlinux.ru>
Date:   Mon Apr 16 22:55:32 2007 +0400

    elinks-0.11.1-alt-lua51.patch
    
    Ported to lua-5.1.  This also implies some compatibility fixes in lua5
    package, i.e. liblualib.so -> liblua.so (so I do not alter configre.in
    about it).
    
    (cherry picked from commit ce2d9e404543caf7f37aca6a73dc05f4e2d164b7)
    
    Conflicts:
    
    	configure.in

diff --git a/configure.in b/configure.in
index cba0c81..bcbcacf 100644
--- a/configure.in
+++ b/configure.in
@@ -907,11 +907,7 @@ if test -z "$disable_lua"; then
 				AC_TRY_LINK([	#include <lua.h>
 						#include <lualib.h>],
 					    [	lua_State *L = lua_open();
-						luaopen_base(L);
-						luaopen_table(L);
-						luaopen_io(L);
-						luaopen_string(L);
-						luaopen_math(L);
+						luaL_openlibs(L);
 						lua_pushboolean(L, 1);
 						lua_close(L);],
 					    cf_result=yes, cf_result=no)
diff --git a/src/scripting/lua/core.c b/src/scripting/lua/core.c
index fcd7176..7fa4405 100644
--- a/src/scripting/lua/core.c
+++ b/src/scripting/lua/core.c
@@ -655,7 +655,7 @@ do_hooks_file(LS, unsigned char *prefix, unsigned char *filename)
 	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);
 	}
@@ -667,12 +667,7 @@ void
 init_lua(struct module *module)
 {
 	L = lua_open();
-
-	luaopen_base(L);
-	luaopen_table(L);
-	luaopen_io(L);
-	luaopen_string(L);
-	luaopen_math(L);
+	luaL_openlibs(L);
 
 	lua_register(L, LUA_ALERT, l_alert);
 	lua_register(L, "current_url", l_current_url);
@@ -777,7 +772,7 @@ handle_ret_eval(struct session *ses)
 		int oldtop = lua_gettop(L);
 
 		if (prepare_lua(ses) == 0) {
-			lua_dostring(L, expr);
+			(void)luaL_dostring(L, expr);
 			lua_settop(L, oldtop);
 			finish_lua();
 		}
diff --git a/src/scripting/lua/hooks.c b/src/scripting/lua/hooks.c
index d79ad80..47c0091 100644
--- a/src/scripting/lua/hooks.c
+++ b/src/scripting/lua/hooks.c
@@ -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");
+		(void)luaL_dostring(lua_state, "if quit_hook then quit_hook() end");
 		finish_lua();
 	}
 

Attachment: pgpQbJB5p3A05.pgp
Description: PGP signature