Use new commands interface
* Use id to delete command
* Add commands to safe list
--- 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: */