Use id to delete command
authorMyhailo Danylenko <isbear@ukrpost.net>
Wed, 07 Apr 2010 21:05:20 +0300
changeset 20 d5748ae53a17
parent 19 4524cdff923f
child 21 29491118c0dd
Use id to delete command
cmd.c
config.h.in
--- a/cmd.c	Sun Apr 04 16:40:43 2010 +0300
+++ b/cmd.c	Wed Apr 07 21:05:20 2010 +0300
@@ -47,7 +47,11 @@
 
 static module_info_t info_cmd_experimental = {
 	.branch          = "experimental",
-	.api             = 15,
+#ifndef HAVE_CMD_ID
+	.api             = 20,
+#else
+	.api             = 23,
+#endif
 	.version         = PROJECT_VERSION,
 	.description     = DESCRIPTION,
 	.requires        = NULL,
@@ -76,6 +80,10 @@
 	GIOChannel *channel;
 } cmd_cb_t;
 
+#ifdef HAVE_CMD_ID
+static gpointer mcmd_cmid = NULL;
+#endif
+
 static GSList *cmd_channels = NULL;
 
 static gboolean is_room (const gchar *jid)
@@ -334,14 +342,23 @@
 
 static void mcmd_init (void)
 {
+#ifndef HAVE_CMD_ID
 	cmd_add ("cmd", "", 0, 0, do_cmd, NULL);
+#else
+	mcmd_cmid = cmd_add ("cmd", "", 0, 0, do_cmd, NULL);
+#endif
 }
 
 static void mcmd_uninit (void)
 {
 	GSList *sel;
 
+#ifndef HAVE_CMD_ID
 	cmd_del ("cmd");
+#else
+	if (mcmd_cmid)
+		cmd_del (mcmd_cmid);
+#endif
 
 	for (sel = cmd_channels; sel; sel = sel->next) {
 		cmd_cb_t *cb = (cmd_cb_t *) sel->data;
--- a/config.h.in	Sun Apr 04 16:40:43 2010 +0300
+++ b/config.h.in	Wed Apr 07 21:05:20 2010 +0300
@@ -2,6 +2,12 @@
 #ifndef LOCAL_CONFIG_H
 #define LOCAL_CONFIG_H
 
+#include <mcabber/config.h>
+
+#if MCABBER_BRANCH_EXPERIMENTAL && MCABBER_API_VERSION >= 23
+#  define HAVE_CMD_ID
+#endif
+
 #define PROJECT_VERSION ( "${PROJECT_VERSION}" )
 
 #endif