comparison mcabber/mcabber/hooks.c @ 1784:250ad919f03f

Small code cleanup in hooks.[ch]
author Mikael Berthe <mikael@lilotux.net>
date Sun, 14 Mar 2010 14:07:25 +0100
parents af3de54ef986
children 5c043358ded0
comparison
equal deleted inserted replaced
1783:af3de54ef986 1784:250ad919f03f
45 gpointer userdata; 45 gpointer userdata;
46 } hook_list_data_t; 46 } hook_list_data_t;
47 47
48 static GSList *hk_handler_queue = NULL; 48 static GSList *hk_handler_queue = NULL;
49 49
50 void hk_add_handler (hk_handler_t handler, guint32 flags, gpointer userdata) 50 void hk_add_handler(hk_handler_t handler, guint32 flags, gpointer userdata)
51 { 51 {
52 hook_list_data_t *h = g_new (hook_list_data_t, 1); 52 hook_list_data_t *h = g_new(hook_list_data_t, 1);
53 h->handler = handler; 53 h->handler = handler;
54 h->flags = flags; 54 h->flags = flags;
55 h->userdata = userdata; 55 h->userdata = userdata;
56 hk_handler_queue = g_slist_append (hk_handler_queue, h); 56 hk_handler_queue = g_slist_append(hk_handler_queue, h);
57 } 57 }
58 58
59 static gint hk_queue_search_cb (hook_list_data_t *a, hook_list_data_t *b) 59 static gint hk_queue_search_cb(hook_list_data_t *a, hook_list_data_t *b)
60 { 60 {
61 if (a->handler == b->handler && a->userdata == b->userdata) 61 if (a->handler == b->handler && a->userdata == b->userdata)
62 return 0; 62 return 0;
63 else 63 else
64 return 1; 64 return 1;
65 } 65 }
66 66
67 void hk_del_handler (hk_handler_t handler, gpointer userdata) 67 void hk_del_handler(hk_handler_t handler, gpointer userdata)
68 { 68 {
69 hook_list_data_t h = { handler, 0, userdata }; 69 hook_list_data_t h = { handler, 0, userdata };
70 GSList *el = g_slist_find_custom (hk_handler_queue, &h, (GCompareFunc) hk_queue_search_cb); 70 GSList *el = g_slist_find_custom(hk_handler_queue, &h,
71 (GCompareFunc) hk_queue_search_cb);
71 if (el) { 72 if (el) {
72 g_free (el->data); 73 g_free (el->data);
73 hk_handler_queue = g_slist_delete_link (hk_handler_queue, el); 74 hk_handler_queue = g_slist_delete_link(hk_handler_queue, el);
74 } 75 }
75 } 76 }
76 #endif 77 #endif
77 78
78 static char *extcmd; 79 static char *extcmd;
234 235
235 #ifdef MODULES_ENABLE 236 #ifdef MODULES_ENABLE
236 { 237 {
237 GSList *h = hk_handler_queue; 238 GSList *h = hk_handler_queue;
238 if (h) { 239 if (h) {
239 #if 0
240 hk_arg_t *args = g_new (hk_arg_t, 5);
241 args[0].name = "hook";
242 args[0].value = "hook-message-in";
243 args[1].name = "jid";
244 args[1].value = bjid;
245 args[2].name = "message";
246 args[2].value = wmsg;
247 args[3].name = "groupchat";
248 args[3].value = is_groupchat ? "true" : "false";
249 args[4].name = NULL;
250 args[4].value = NULL;
251 #else
252 // We can use a const array for keys/static values, so modules 240 // We can use a const array for keys/static values, so modules
253 // can do fast known to them args check by just comparing pointers... 241 // can do fast known to them args check by just comparing pointers...
254 hk_arg_t args[] = { 242 hk_arg_t args[] = {
255 { "hook", "hook-message-in" }, 243 { "hook", "hook-message-in" },
256 { "jid", bjid }, 244 { "jid", bjid },
257 { "message", wmsg }, 245 { "message", wmsg },
258 { "groupchat", is_groupchat ? "true" : "false" }, 246 { "groupchat", is_groupchat ? "true" : "false" },
259 { NULL, NULL }, 247 { NULL, NULL },
260 }; 248 };
261 #endif
262 while (h) { 249 while (h) {
263 hook_list_data_t *data = h->data; 250 hook_list_data_t *data = h->data;
264 if (data->flags & HOOK_MESSAGE_IN) 251 if (data->flags & HOOK_MESSAGE_IN)
265 (data->handler) (HOOK_MESSAGE_IN, args, data->userdata); 252 (data->handler) (HOOK_MESSAGE_IN, args, data->userdata);
266 h = g_slist_next (h); 253 h = g_slist_next (h);