--- a/lastmsg/lastmsg.c Sun Mar 14 17:36:43 2010 +0100
+++ b/lastmsg/lastmsg.c Sat Mar 20 16:47:12 2010 +0100
@@ -45,6 +45,8 @@
static GSList *lastmsg_list;
+static guint last_message_hid, last_status_hid;
+
struct lastm_T {
gchar *mucname;
gchar *nickname;
@@ -71,7 +73,8 @@
lastmsg_list = NULL;
}
-static void last_message_hh(guint32 hid, hk_arg_t *args, gpointer userdata)
+static guint last_message_hh(const gchar *hookname, hk_arg_t *args,
+ gpointer userdata)
{
enum imstatus status;
const gchar *bjid, *res, *msg;
@@ -80,7 +83,7 @@
status = xmpp_getstatus();
if (status != notavail && status != away)
- return;
+ return HOOK_HANDLER_RESULT_ALLOW_MORE_HOOKS;
bjid = res = NULL;
msg = NULL;
@@ -110,9 +113,11 @@
lastm_item->msg = g_strdup(msg);
lastmsg_list = g_slist_append(lastmsg_list, lastm_item);
}
+ return HOOK_HANDLER_RESULT_ALLOW_MORE_HOOKS;
}
-static void last_status_hh(guint32 hid, hk_arg_t *args, gpointer userdata)
+static guint last_status_hh(const gchar *hookname, hk_arg_t *args,
+ gpointer userdata)
{
gboolean not_away = FALSE;
@@ -126,11 +131,13 @@
}
}
}
- if (!not_away || !lastmsg_list) return;
+ if (!not_away || !lastmsg_list)
+ return HOOK_HANDLER_RESULT_ALLOW_MORE_HOOKS;
scr_log_print(LPRINT_NORMAL, "Looks like you're back...");
scr_log_print(LPRINT_NORMAL, "I've got news for you, use /lastmsg to "
"read your messages!");
+ return HOOK_HANDLER_RESULT_ALLOW_MORE_HOOKS;
}
/* Initialization */
@@ -139,8 +146,10 @@
/* Add command */
cmd_add("lastmsg", "Display last missed messages", 0, 0, do_lastmsg, NULL);
- hk_add_handler(last_message_hh, HOOK_MESSAGE_IN, NULL);
- hk_add_handler(last_status_hh, HOOK_MY_STATUS_CHANGE, NULL);
+ last_message_hid = hk_add_handler(last_message_hh, HOOK_POST_MESSAGE_IN,
+ G_PRIORITY_DEFAULT_IDLE, NULL);
+ last_status_hid = hk_add_handler(last_status_hh, HOOK_MY_STATUS_CHANGE,
+ G_PRIORITY_DEFAULT_IDLE, NULL);
}
/* Uninitialization */
@@ -148,8 +157,8 @@
{
/* Unregister command */
cmd_del("lastmsg");
- hk_del_handler(last_message_hh, NULL);
- hk_del_handler(last_status_hh, NULL);
+ hk_del_handler(HOOK_POST_MESSAGE_IN, last_message_hid);
+ hk_del_handler(HOOK_MY_STATUS_CHANGE, last_status_hid);
for (GSList *li = lastmsg_list; li ; li = g_slist_next(li)) {
struct lastm_T *lastm_item = li->data;