Add experimental cmd-del-id patch
authorMyhailo Danylenko <isbear@ukrpost.net>
Mon, 05 Apr 2010 03:35:55 +0300
changeset 5 1c0db2e553e2
parent 4 63ff8383721a
child 6 63ebb94f27aa
Add experimental cmd-del-id patch
cmd-del-id
series
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmd-del-id	Mon Apr 05 03:35:55 2010 +0300
@@ -0,0 +1,93 @@
+diff -r 35bc83be45cc mcabber/mcabber/commands.c
+--- a/mcabber/mcabber/commands.c	Sun Apr 04 01:31:28 2010 +0300
++++ b/mcabber/mcabber/commands.c	Mon Apr 05 03:34:53 2010 +0300
+@@ -100,26 +100,25 @@
+ 
+ static void do_module(char *arg);
+ 
+-gpointer cmd_del(const char *name)
++gpointer cmd_del(gpointer id)
+ {
+   GSList *sl_cmd;
+-  for (sl_cmd = Commands; sl_cmd; sl_cmd = sl_cmd->next) {
+-    cmd *command = (cmd *) sl_cmd->data;
+-    if (!strcmp (command->name, name)) {
++  for (sl_cmd = Commands; sl_cmd; sl_cmd = sl_cmd->next)
++    if (sl_cmd -> data == id) {
++      cmd *command = (cmd *) sl_cmd->data;
+       gpointer userdata = command->userdata;
+       Commands = g_slist_delete_link(Commands, sl_cmd);
+       compl_del_category_word(COMPL_CMD, command->name);
+       g_free(command);
+       return userdata;
+     }
+-  }
+   return NULL;
+ }
+ 
+ //  cmd_add()
+ // Adds a command to the commands list and to the CMD completion list
+-void cmd_add(const char *name, const char *help, guint flags_row1,
+-             guint flags_row2, void (*f)(char*), gpointer userdata)
++gpointer cmd_add(const char *name, const char *help, guint flags_row1,
++                 guint flags_row2, void (*f)(char*), gpointer userdata)
+ #define cmd_add(A, B, C, D, E) cmd_add (A, B, C, D, E, NULL);
+ #else
+ static void cmd_add(const char *name, const char *help,
+@@ -138,6 +137,9 @@
+   Commands = g_slist_prepend(Commands, n_cmd);
+   // Add to completion CMD category
+   compl_add_category_word(COMPL_CMD, name);
++#ifdef MODULES_ENABLE
++  return n_cmd;
++#endif
+ }
+ 
+ //  cmd_init()
+diff -r 35bc83be45cc mcabber/mcabber/commands.h
+--- a/mcabber/mcabber/commands.h	Sun Apr 04 01:31:28 2010 +0300
++++ b/mcabber/mcabber/commands.h	Mon Apr 05 03:34:53 2010 +0300
+@@ -23,8 +23,8 @@
+ char *expandalias(const char *line);
+ #ifdef MODULES_ENABLE
+ void cmd_deinit(void);
+-gpointer cmd_del(const char *name);
+-void cmd_add(const char *name, const char *help, guint flags1, guint flags2, void (*f)(char*), gpointer userdata);
++gpointer cmd_del(gpointer id);
++gpointer cmd_add(const char *name, const char *help, guint flags1, guint flags2, void (*f)(char*), gpointer userdata);
+ #endif
+ 
+ void cmd_room_whois(gpointer bud, char *nick_locale, guint interactive);
+diff -r 35bc83be45cc mcabber/modules/beep/beep.c
+--- a/mcabber/modules/beep/beep.c	Sun Apr 04 01:31:28 2010 +0300
++++ b/mcabber/modules/beep/beep.c	Mon Apr 05 03:34:53 2010 +0300
+@@ -46,8 +46,9 @@
+         .next            = NULL,
+ };
+ 
+-static guint beep_cid = 0;  /* Command completion category id */
+-static guint beep_hid = 0;  /* Hook handler id */
++static guint    beep_cid  = 0;  /* Command completion category id */
++static gpointer beep_cmid = 0;  /* Command id */
++static guint    beep_hid  = 0;  /* Hook handler id */
+ 
+ /* Event handler */
+ static guint beep_hh(const gchar *hookname, hk_arg_t *args, gpointer userdata)
+@@ -94,7 +95,7 @@
+     compl_add_category_word(beep_cid, "disable");
+   }
+   /* Add command */
+-  cmd_add("beep", "", beep_cid, 0, do_beep, NULL);
++  beep_cmid = cmd_add("beep", "", beep_cid, 0, do_beep, NULL);
+   /* Add handler
+    * We are only interested in incoming message events
+    */
+@@ -108,7 +109,7 @@
+   /* Unregister event handler */
+   hk_del_handler(HOOK_POST_MESSAGE_IN, beep_hid);
+   /* Unregister command */
+-  cmd_del("beep");
++  cmd_del(beep_cmid);
+   /* Give back completion handle */
+   if (beep_cid)
+     compl_del_category(beep_cid);
--- a/series	Sun Apr 04 01:33:42 2010 +0300
+++ b/series	Mon Apr 05 03:35:55 2010 +0300
@@ -11,3 +11,4 @@
 direct-invite
 update-changelog-v17
 muc-multiple-statuses
+cmd-del-id