# HG changeset patch # User Myhailo Danylenko # Date 1270664299 -10800 # Node ID 543bd89273541dcbd457888650d50d115e1ad401 # Parent fbcad36ca35231cb80603e85a535e460179d9ad7 Use new commands interface * Use id to delete command * Add commands to safe list diff -r fbcad36ca352 -r 543bd8927354 config.h.in --- 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 + +#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 diff -r fbcad36ca352 -r 543bd8927354 env.c --- 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: */