--- a/main.c Fri Mar 05 19:15:08 2010 +0200
+++ b/main.c Fri Mar 05 19:49:09 2010 +0200
@@ -17,7 +17,7 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include <glib.h>
-#include <gmodule.h>
+#include <gmodule.h> // g_module_*
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
@@ -37,10 +37,22 @@
#include <mcabber/settings.h> // settings_set, settings_del, settings_get
#include <mcabber/compl.h> // compl_new_category, compl_add_category_word, compl_del_category_word
#include <mcabber/events.h> // evs_*
+#include <mcabber/modules.h> // module_info_t
#include "config.h"
#include "util.h"
+// module description
+static void mlua_init (void);
+static void mlua_uninit (void);
+
+module_info_t info_lua = {
+ .mcabber_version = "0.10.0",
+ .requires = NULL,
+ .init = mlua_init,
+ .uninit = mlua_uninit,
+};
+
// global lua state object, necessary for uninitialization function
static lua_State *lua = NULL;
@@ -1270,11 +1282,22 @@
const gchar *g_module_check_init (GModule *module)
{
lua = lua_newstate (lua_alloc, NULL);
- if (!lua) {
- scr_LogPrint (LPRINT_LOGNORM, "lua: Initialization error");
+ if (!lua)
return "Lua initialization error";
+ else
+ return NULL;
+}
+
+void g_module_unload (GModule *module)
+{
+ if (lua) {
+ lua_close (lua);
+ lua = NULL;
}
+}
+static void mlua_init (void)
+{
luaL_openlibs (lua);
luaL_register (lua, "main", lua_reg_main);
@@ -1303,7 +1326,6 @@
lua_lm_log_handler_id = g_log_set_handler ("lua-lm", G_LOG_LEVEL_MASK, (GLogFunc) lua_lm_log_handler, NULL);
#endif
-#if 1
{
char *initfile = expand_filename (settings_opt_get ("lua_init_filename"));
@@ -1321,7 +1343,6 @@
g_free (initfile);
}
}
-#endif
hk_add_handler ((hk_handler_t) lua_hook, ~((guint32)0), lua);
@@ -1332,8 +1353,6 @@
};
lua_hook (0, args, lua);
}
-
- return NULL;
}
static void lua_events_cancel (gpointer data, gpointer ignore)
@@ -1389,7 +1408,7 @@
compl_del_category (id);
}
-void g_module_unload (GModule *module)
+static void mlua_uninit (void)
{
if (lua) {
hk_arg_t args[] = {