Signed-off-by: Arvydas Sidorenko <[email protected]>
---
 src/plugins/scripts/lua/weechat-lua.c |   24 +++++++++++++++++++++++-
 src/plugins/scripts/lua/weechat-lua.h |    2 ++
 2 files changed, 25 insertions(+), 1 deletions(-)

diff --git a/src/plugins/scripts/lua/weechat-lua.c 
b/src/plugins/scripts/lua/weechat-lua.c
index 2cfea5f..b316cc3 100644
--- a/src/plugins/scripts/lua/weechat-lua.c
+++ b/src/plugins/scripts/lua/weechat-lua.c
@@ -226,6 +226,28 @@ weechat_lua_exec (struct t_plugin_script *script, int 
ret_type,
 }
 
 /*
+ * weechat_lua_registerlib: registers a library to use inside Lua script
+ */
+
+void weechat_lua_registerlib(lua_State *L, const char *libname,
+                             const luaL_Reg *l)
+{
+#if LUA_VERSION_NUM >= 502
+    if (libname)
+    {
+        lua_newtable(L);
+        luaL_setfuncs(L, l, 0);
+        lua_pushvalue(L, -1);
+        lua_setglobal(L, libname);
+    }
+    else
+        luaL_setfuncs(L, l, 0);
+#else
+    luaL_register(L, libname, l);
+#endif
+}
+
+/*
  * weechat_lua_load: load a Lua script
  */
 
@@ -284,7 +306,7 @@ weechat_lua_load (const char *filename)
     luaopen_debug (lua_current_interpreter);
 #endif
 
-    luaL_openlib (lua_current_interpreter, "weechat", weechat_lua_api_funcs, 
0);
+    weechat_lua_registerlib (lua_current_interpreter, "weechat", 
weechat_lua_api_funcs);
 
 #ifdef LUA_VERSION_NUM
     if (luaL_dostring (lua_current_interpreter, weechat_lua_code) != 0)
diff --git a/src/plugins/scripts/lua/weechat-lua.h 
b/src/plugins/scripts/lua/weechat-lua.h
index 944a2ac..b54526b 100644
--- a/src/plugins/scripts/lua/weechat-lua.h
+++ b/src/plugins/scripts/lua/weechat-lua.h
@@ -44,5 +44,7 @@ extern struct t_hashtable *weechat_lua_tohashtable (lua_State 
*interpreter,
 extern void *weechat_lua_exec (struct t_plugin_script *script, int ret_type,
                                const char *function,
                                const char *format, void **argv);
+extern void weechat_lua_registerlib(lua_State *L, const char *libname,
+                                    const luaL_Reg *l);
 
 #endif /* __WEECHAT_LUA_H */
-- 
1.7.8.6


_______________________________________________
Weechat-dev mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/weechat-dev

Reply via email to