command_handler_t: make args parameter const
This patch prevents command handlers from modifying the strings passed in the 'args' array.
This commit is contained in:
parent
cc63d6e72b
commit
deede35c27
|
@ -48,7 +48,7 @@ int fast_and_dangerous = 0;
|
||||||
Jim_Interp *interp = NULL;
|
Jim_Interp *interp = NULL;
|
||||||
|
|
||||||
static int run_command(command_context_t *context,
|
static int run_command(command_context_t *context,
|
||||||
command_t *c, char *words[], unsigned num_words);
|
command_t *c, const char *words[], unsigned num_words);
|
||||||
|
|
||||||
static void tcl_output(void *privData, const char *file, unsigned line,
|
static void tcl_output(void *privData, const char *file, unsigned line,
|
||||||
const char *function, const char *string)
|
const char *function, const char *string)
|
||||||
|
@ -141,7 +141,7 @@ static int script_command(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
|
||||||
|
|
||||||
log_add_callback(tcl_output, tclOutput);
|
log_add_callback(tcl_output, tclOutput);
|
||||||
|
|
||||||
retval = run_command(context, c, words, nwords);
|
retval = run_command(context, c, (const char **)words, nwords);
|
||||||
|
|
||||||
log_remove_callback(tcl_output, tclOutput);
|
log_remove_callback(tcl_output, tclOutput);
|
||||||
|
|
||||||
|
@ -435,7 +435,7 @@ char *command_name(struct command_s *c, char delim)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int run_command(command_context_t *context,
|
static int run_command(command_context_t *context,
|
||||||
command_t *c, char *words[], unsigned num_words)
|
command_t *c, const char *words[], unsigned num_words)
|
||||||
{
|
{
|
||||||
int start_word = 0;
|
int start_word = 0;
|
||||||
if (!((context->mode == COMMAND_CONFIG) || (c->mode == COMMAND_ANY) || (c->mode == context->mode)))
|
if (!((context->mode == COMMAND_CONFIG) || (c->mode == COMMAND_ANY) || (c->mode == context->mode)))
|
||||||
|
@ -445,7 +445,9 @@ static int run_command(command_context_t *context,
|
||||||
return ERROR_FAIL;
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int retval = c->handler(context, c->name, words + start_word + 1, num_words - start_word - 1);
|
unsigned argc = num_words - start_word - 1;
|
||||||
|
const char **args = words + start_word + 1;
|
||||||
|
int retval = c->handler(context, c->name, args, argc);
|
||||||
if (retval == ERROR_COMMAND_SYNTAX_ERROR)
|
if (retval == ERROR_COMMAND_SYNTAX_ERROR)
|
||||||
{
|
{
|
||||||
/* Print help for command */
|
/* Print help for command */
|
||||||
|
|
|
@ -88,7 +88,7 @@ typedef struct command_context_s
|
||||||
*/
|
*/
|
||||||
#define __COMMAND_HANDLER(name, extra...) \
|
#define __COMMAND_HANDLER(name, extra...) \
|
||||||
int name(struct command_context_s *cmd_ctx, \
|
int name(struct command_context_s *cmd_ctx, \
|
||||||
const char *cmd, char **args, unsigned argc, ##extra)
|
const char *cmd, const char *args[], unsigned argc, ##extra)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use this to macro to call a command helper (or a nested handler).
|
* Use this to macro to call a command helper (or a nested handler).
|
||||||
|
|
Loading…
Reference in New Issue