env.c
changeset 21 8b61328ab7c1
parent 18 962e2fc6a708
child 22 b71ca771fa1a
equal deleted inserted replaced
20:366078a16d85 21:8b61328ab7c1
    28 #include <mcabber/commands.h>
    28 #include <mcabber/commands.h>
    29 #include <mcabber/utils.h>
    29 #include <mcabber/utils.h>
    30 #include <mcabber/compl.h>
    30 #include <mcabber/compl.h>
    31 #include <mcabber/logprint.h>
    31 #include <mcabber/logprint.h>
    32 #include <mcabber/modules.h>
    32 #include <mcabber/modules.h>
       
    33 #include <mcabber/api.h>
    33 
    34 
    34 #include "config.h"
    35 #include "config.h"
    35 
    36 
    36 static void env_load   (void);
    37 void env_load   (void);
    37 static void env_unload (void);
    38 void env_unload (void);
    38 
    39 
    39 #define DESCRIPTION ( "Some debugging routines\nProvides commands /env and /cd" )
    40 #define DESCRIPTION ( "Some debugging routines\nProvides commands /env and /cd" )
    40 
    41 
    41 static module_info_t info_env_experimental = {
    42 static module_info_t info_env_dev = {
    42 	.branch      = "experimental",
    43 	.branch      = "dev",
    43 	.api         = 28,
    44 	.api         = 20,
    44 	.version     = PROJECT_VERSION,
    45 	.version     = PROJECT_VERSION,
    45 	.description = DESCRIPTION,
    46 	.description = DESCRIPTION,
    46 	.requires    = NULL,
    47 	.requires    = NULL,
    47 	.init        = env_load,
    48 	.init        = env_load,
    48 	.uninit      = env_unload,
    49 	.uninit      = env_unload,
    49 	.next        = NULL,
    50 	.next        = NULL,
    50 };
    51 };
    51 
    52 
    52 static module_info_t info_env_dev = {
       
    53 	.branch      = "dev",
       
    54 	.api         = 13,
       
    55 	.version     = PROJECT_VERSION,
       
    56 	.description = DESCRIPTION,
       
    57 	.requires    = NULL,
       
    58 	.init        = env_load,
       
    59 	.uninit      = env_unload,
       
    60 	.next        = &info_env_experimental,
       
    61 };
       
    62 
       
    63 module_info_t info_env = {
    53 module_info_t info_env = {
    64 	.branch      = "0.10.0",
    54 	.branch      = "0.10.1",
    65 	.api         = 1,
    55 	.api         = 1,
    66 	.version     = PROJECT_VERSION,
    56 	.version     = PROJECT_VERSION,
    67 	.description = DESCRIPTION,
    57 	.description = DESCRIPTION,
    68 	.requires    = NULL,
    58 	.requires    = NULL,
    69 	.init        = env_load,
    59 	.init        = env_load,
    70 	.uninit      = env_unload,
    60 	.uninit      = env_unload,
    71 	.next        = &info_env_dev,
    61 	.next        = &info_env_dev,
    72 };
    62 };
    73 
    63 
    74 #ifdef HAVE_CMD_ID
    64 #ifdef MCABBER_API_HAVE_CMD_ID
    75 static gpointer env_env_cmid = NULL;
    65 static gpointer env_env_cmid = NULL;
    76 static gpointer env_cd_cmid  = NULL;
    66 static gpointer env_cd_cmid  = NULL;
    77 #ifdef HAVE_CMD_SAFE
       
    78 static gboolean env_env_set_safe = FALSE;
    67 static gboolean env_env_set_safe = FALSE;
    79 static gboolean env_cd_set_safe  = FALSE;
    68 static gboolean env_cd_set_safe  = FALSE;
    80 #endif
       
    81 #endif
    69 #endif
    82 
    70 
    83 extern char **environ;
    71 extern char **environ;
    84 
    72 
    85 // /env [option [= [value]]]
    73 // /env [option [= [value]]]
   178 			scr_log_print (LPRINT_NORMAL, "%s", cwd);
   166 			scr_log_print (LPRINT_NORMAL, "%s", cwd);
   179 	} else if (chdir (arg) == -1) // set
   167 	} else if (chdir (arg) == -1) // set
   180 		scr_log_print (LPRINT_NORMAL, "Cannot change current working directory: %s.", strerror (errno));
   168 		scr_log_print (LPRINT_NORMAL, "Cannot change current working directory: %s.", strerror (errno));
   181 }
   169 }
   182 
   170 
   183 static void env_load (void)
   171 void env_load (void)
   184 {
   172 {
   185 	// command
   173 	// command
   186 #ifndef HAVE_CMD_ID
   174 #ifndef MCABBER_API_HAVE_CMD_ID
   187 	cmd_add ("env", "", 0, 0, do_env, NULL);
   175 	cmd_add ("env", "", 0, 0, do_env, NULL);
   188 	cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
   176 	cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
   189 #else
   177 #else
   190 	env_env_cmid = cmd_add ("env", "", 0, 0, do_env, NULL);
   178 	env_env_cmid = cmd_add ("env", "", 0, 0, do_env, NULL);
   191 	env_cd_cmid  = cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
   179 	env_cd_cmid  = cmd_add ("cd", "", COMPL_FILENAME, 0, do_cd, NULL);
   192 #ifdef HAVE_CMD_SAFE
       
   193 	env_env_set_safe = cmd_set_safe ("env", TRUE);
   180 	env_env_set_safe = cmd_set_safe ("env", TRUE);
   194 	env_cd_set_safe  = cmd_set_safe ("cd",  TRUE);
   181 	env_cd_set_safe  = cmd_set_safe ("cd",  TRUE);
   195 #endif
   182 #endif
   196 #endif
   183 }
   197 }
   184 
   198 
   185 void env_unload (void)
   199 static void env_unload (void)
       
   200 {
   186 {
   201 	// command
   187 	// command
   202 #ifndef HAVE_CMD_ID
   188 #ifndef MCABBER_API_HAVE_CMD_ID
   203 	cmd_del ("cd");
   189 	cmd_del ("cd");
   204 	cmd_del ("env");
   190 	cmd_del ("env");
   205 #else
   191 #else
   206 	if (env_env_cmid)
   192 	if (env_env_cmid)
   207 		cmd_del (env_env_cmid);
   193 		cmd_del (env_env_cmid);
   208 	if (env_cd_cmid)
   194 	if (env_cd_cmid)
   209 		cmd_del (env_cd_cmid);
   195 		cmd_del (env_cd_cmid);
   210 #ifdef HAVE_CMD_SAFE
       
   211 	if (env_env_set_safe)
   196 	if (env_env_set_safe)
   212 		cmd_set_safe ("env", FALSE);
   197 		cmd_set_safe ("env", FALSE);
   213 	if (env_cd_set_safe)
   198 	if (env_cd_set_safe)
   214 		cmd_set_safe ("cd", FALSE);
   199 		cmd_set_safe ("cd", FALSE);
   215 #endif
   200 #endif
   216 #endif
       
   217 }
   201 }
   218 
   202 
   219 /* vim: se ts=4 sw=4: */
   203 /* vim: se ts=4 sw=4: */