Update lastmsg module to API dev:8
authorMikael Berthe <mikael@lilotux.net>
Sat, 20 Mar 2010 16:47:12 +0100
changeset 12 3b30c879c8cc
parent 11 573a48de8ee1
child 13 efe544108ca1
Update lastmsg module to API dev:8
lastmsg/lastmsg.c
--- 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;