Use new commands interface
authorMyhailo Danylenko <isbear@ukrpost.net>
Wed, 07 Apr 2010 21:18:19 +0300
changeset 16 543bd8927354
parent 15 fbcad36ca352
child 17 2c47fa36d473
Use new commands interface * Use id to delete command * Add commands to safe list
config.h.in
env.c
--- a/config.h.in	Sun Apr 04 16:41:31 2010 +0300
+++ b/config.h.in	Wed Apr 07 21:18:19 2010 +0300
@@ -2,6 +2,15 @@
 #ifndef LOCAL_CONFIG_H
 #define LOCAL_CONFIG_H
 
+#include <mcabber/config.h>
+
+#if MCABBER_BRANCH_EXPERIMENTAL && MCABBER_API_VERSION >= 23
+#  define HAVE_CMD_ID
+#  if MCABBER_API_VERSION >= 24
+#    define HAVE_CMD_SAFE
+#  endif
+#endif
+
 #define PROJECT_VERSION ( "${PROJECT_VERSION}" )
 
 #endif
--- a/env.c	Sun Apr 04 16:41:31 2010 +0300
+++ b/env.c	Wed Apr 07 21:18:19 2010 +0300
@@ -40,7 +40,13 @@
 
 static module_info_t info_env_experimental = {
 	.branch      = "experimental",
-	.api         = 15,
+#ifndef HAVE_CMD_ID
+	.api         = 20,
+#elif defined HAVE_CMD_SAFE
+	.api         = 24,
+#else
+	.api         = 23,
+#endif
 	.version     = PROJECT_VERSION,
 	.description = DESCRIPTION,
 	.requires    = NULL,
@@ -60,6 +66,15 @@
 	.next        = &info_env_experimental,
 };
 
+#ifdef HAVE_CMD_ID
+static gpointer env_env_cmid = NULL;
+static gpointer env_cd_cmid  = NULL;
+#ifdef HAVE_CMD_SAFE
+static gboolean env_env_set_safe = FALSE;
+static gboolean env_cd_set_safe  = FALSE;
+#endif
+#endif
+
 extern char **environ;
 
 // /env [option [= [value]]]
@@ -163,15 +178,37 @@
 static void env_load (void)
 {
 	// command
+#ifndef HAVE_CMD_ID
 	cmd_add ("env", "", 0, 0, do_env, NULL);
 	cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
+#else
+	env_env_cmid = cmd_add ("env", "", 0, 0, do_env, NULL);
+	env_cd_cmid  = cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
+#ifdef HAVE_CMD_SAFE
+	env_env_set_safe = cmd_set_safe ("env", TRUE);
+	env_cd_set_safe  = cmd_set_safe ("cd",  TRUE);
+#endif
+#endif
 }
 
 static void env_unload (void)
 {
 	// command
+#ifdef HAVE_CMD_ID
 	cmd_del ("cd");
 	cmd_del ("env");
+#else
+	if (env_env_cmid)
+		cmd_del (env_env_cmid);
+	if (env_cd_cmid)
+		cmd_del (env_cd_cmid);
+#ifdef HAVE_CMD_SAFE
+	if (env_env_set_safe)
+		cmd_set_safe ("env", FALSE);
+	if (env_cd_set_safe)
+		cmd_set_safe ("cd", FALSE);
+#endif
+#endif
 }
 
 /* vim: se ts=4 sw=4: */