--- a/CMakeLists.txt Mon Feb 23 17:05:43 2009 +0200
+++ b/CMakeLists.txt Mon Feb 23 18:27:13 2009 +0200
@@ -4,14 +4,15 @@
## User options
option(DEBUG "Enable debugging output" ON)
+option(LLM_LOG_HANDLER "Enable registration of log messages handler for lua-loudmouth library's messages" ON)
set(MCABBER_INCLUDE_DIR "/home/isbear/src/mcabber/hglm/mcabber/src" CACHE FILEPATH "Path to mcabber headers")
+set(LUA_HOOK_NAME "hook_handler" CACHE STRING "Lua function name to be called on hook invocation")
## Define targets
add_library(mcabber-lua MODULE main.c util.c)
get_target_property(mcabber-lua_SOURCES mcabber-lua SOURCES)
## Packaging information
-#set(CPACK_PACKAGE_NAME mcabber-lua)
set(CPACK_PACKAGE_VERSION_MAJOR 0)
set(CPACK_PACKAGE_VERSION_MINOR 0)
set(CPACK_PACKAGE_VERSION_PATCH 0)
@@ -33,16 +34,15 @@
## Gather information about system
find_package(Lua51 REQUIRED)
-#execute_process(COMMAND lua -e "print ( package.path )" OUTPUT_VARIABLE LUA_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
-#execute_process(COMMAND lua -e "print ( package.cpath )" OUTPUT_VARIABLE LUA_CPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLIB REQUIRED glib-2.0)
pkg_check_modules(GMODULE REQUIRED gmodule-2.0)
+# XXX: we need only headers
pkg_check_modules(LM REQUIRED loudmouth-1.0)
find_package(Perl)
## Set up compiler
-configure_file(config.h.in config.h)
+configure_file(config.h.in config.h ESCAPE_QUOTES)
include_directories(SYSTEM ${LUA_INCLUDE_DIR} ${GLIB_INCLUDE_DIRS} ${GMODULE_INCLUDE_DIRS} ${LM_INCLUDE_DIRS})
target_link_libraries(mcabber-lua ${LUA_LIBRARIES} ${GLIB_LIBRARIES} ${GMODULE_LIBRARIES})
include_directories(${mcabber-lua_SOURCE_DIR} ${mcabber-lua_BINARY_DIR} ${MCABBER_INCLUDE_DIR})
@@ -52,13 +52,9 @@
add_custom_command(OUTPUT ${mcabber-lua_BINARY_DIR}/mcabber-lua.html COMMAND ${PERL_EXECUTABLE} ${mcabber-lua_SOURCE_DIR}/docgen.pl ${mcabber-lua_SOURCES} > ${mcabber-lua_BINARY_DIR}/mcabber-lua.html DEPENDS ${mcabber-lua_SOURCE_DIR}/docgen.pl ${mcabber-lua_SOURCES} WORKING_DIRECTORY ${mcabber-lua_SOURCE_DIR})
add_custom_target(doc ALL DEPENDS ${mcabber-lua_BINARY_DIR}/mcabber-lua.html)
endif()
-#add_custom_target(test COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" lua ${lua-lm_SOURCE_DIR}/test.lua DEPENDS loudmouth VERBATIM)
-#add_custom_target(test1 COMMAND env "LUA_PATH=${lua-lm_SOURCE_DIR}/?.lua;${LUA_PATH}" "LUA_CPATH=${lua-lm_SOURCE_DIR}/?.so;${lua-lm_BINARY_DIR}/?.so;${LUA_CPATH}" lua ${lua-lm_BINARY_DIR}/test.lua DEPENDS loudmouth VERBATIM)
## Set up installer
install(TARGETS mcabber-lua DESTINATION lib/mcabber)
-#install(FILES lm.lua DESTINATION share/lua/5.1)
-#install(FILES test.lua DESTINATION share/doc/${CPACK_PACKAGE_NAME}/examples)
if(PERL_FOUND)
install(FILES ${mcabber-lua_BINARY_DIR}/mcabber-lua.html DESTINATION share/doc/${CPACK_PACKAGE_NAME})
endif()
--- a/README Mon Feb 23 17:05:43 2009 +0200
+++ b/README Mon Feb 23 18:27:13 2009 +0200
@@ -1,21 +1,26 @@
This is a lua 5.1 module for mcabber.
-To install it, you need lua and glib headers and libraries and
-cmake. Then do
+To install it, you will need:
+- lua library and headers
+- glib (with gmodule) library and headers
+- loudmouth headers
+- mcabber-lm sources (for headers)
+- cmake
+- perl (optional)
+
+Then do
+$ mkdir build
$ cd build
$ cmake ..
+$ make edit_cache
$ make
# make install
Debian users can instead of make install do
-$ make package
+$ fakeroot make package
# dpkg -i mcabber-lua-*.deb
-Also you can be interested in running
-$ make edit_cache
-before doing make to configure some project settings.
-
This code underlies terms of GNU GPL v2 or later.
I will be happy to get feedback, patches, suggestions, etc.
--- a/config.h.in Mon Feb 23 17:05:43 2009 +0200
+++ b/config.h.in Mon Feb 23 18:27:13 2009 +0200
@@ -1,24 +1,30 @@
-#ifndef LLM_CONFIG_H
-#define LLM_CONFIG_H
+#ifndef MLUA_CONFIG_H
+#define MLUA_CONFIG_H
// define this to enable debugging output
#cmakedefine DEBUG
+// define this to enable lua-loudmouth log messages handler
+#cmakedefine LLM_LOG_HANDLER
+
+// define this to a lua function name that will handle hooks
+#define LUA_HOOK_NAME ( "${LUA_HOOK_NAME}" )
+
// hack for mcabber headers
#define MODULES_ENABLE
#ifdef DEBUG
# include <stdio.h>
-# ifndef LLM_LOG_PREFIX
-# define LLM_LOG_PREFIX ( NULL )
+# ifndef MLUA_LOG_PREFIX
+# define MLUA_LOG_PREFIX ( NULL )
# endif
-# define D(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_DEBUG, FORMAT); }
-# define I(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_INFO, FORMAT); }
-# define W(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_WARNING, FORMAT); }
-# define E(FORMAT...) { g_log (LLM_LOG_PREFIX, G_LOG_LEVEL_ERROR, FORMAT); }
+# define D(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_DEBUG, FORMAT); }
+# define I(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_INFO, FORMAT); }
+# define W(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_WARNING, FORMAT); }
+# define E(FORMAT...) { g_log (MLUA_LOG_PREFIX, G_LOG_LEVEL_ERROR, FORMAT); }
#else
# define D(FORMAT...) { /* FORMAT */ }
# define I(FORMAT...) { /* FORMAT */ }
--- a/main.c Mon Feb 23 17:05:43 2009 +0200
+++ b/main.c Mon Feb 23 18:27:13 2009 +0200
@@ -8,6 +8,7 @@
#include <stdlib.h> // getenv
#include <string.h> // strcmp
+#include "config.h"
#include "util.h"
#include "logprint.h" // scr_LogPrint
#include "screen.h" // scr_Beep, scr_WriteIncomingMessage
@@ -522,7 +523,19 @@
// MAIN INITIALIZATION CODE
+#ifdef LLM_LOG_HANDLER
+// FIXME: this should not be here
+guint lua_lm_log_handler_id;
+
+void lua_lm_log_handler (const gchar *domain, GLogLevelFlags log_level, const gchar *message, gpointer ignore)
+{
+ scr_LogPrint (LPRINT_LOGNORM, "%s: %s", domain, message);
+}
+#endif
+
+#ifndef LUA_HOOK_NAME
#define LUA_HOOK_NAME ( "hook_handler" )
+#endif
static void lua_hook (hk_arg_t *args, lua_State *L)
{
@@ -590,6 +603,11 @@
lua_pop (lua, 1); // XXX
lua_register (lua, "dopath", lua_global_dopath);
lua_register (lua, "print", lua_global_print );
+
+#ifdef LLM_LOG_HANDLER
+ // FIXME: this should not be here.
+ lua_lm_log_handler_id = g_log_set_handler ("lua-lm", G_LOG_LEVEL_MASK, (GLogFunc) lua_lm_log_handler, NULL);
+#endif
initfile = mcabber_config_filename ("mcabberrc.lua");
if (!initfile)
@@ -657,6 +675,11 @@
lua_close (lua);
lua = NULL;
+
+#ifdef LLM_LOG_HANDLER
+ // FIXME: shouldn't be here
+ g_log_remove_handler ("lua-lm", lua_lm_log_handler_id);
+#endif
}
}