main.c
changeset 93 0a10228296c1
parent 92 5d691423c8a6
child 94 0379139a2003
--- 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[] = {