helper/command: inline run_command() in exec_command()
Simplify the command execution by inlining run_command() inside exec_command(). Change-Id: Id932b006846720cfd867d22d142cd35831dbd1a2 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/8056 Tested-by: jenkins
This commit is contained in:
parent
f9ea9ce24c
commit
f857db98bd
|
@ -489,14 +489,27 @@ static bool command_can_run(struct command_context *cmd_ctx, struct command *c,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int run_command(struct command_context *context,
|
static int exec_command(Jim_Interp *interp, struct command_context *context,
|
||||||
struct command *c, const char **words, unsigned num_words)
|
struct command *c, int argc, Jim_Obj * const *argv)
|
||||||
{
|
{
|
||||||
|
if (c->jim_handler)
|
||||||
|
return c->jim_handler(interp, argc, argv);
|
||||||
|
|
||||||
|
/* use c->handler */
|
||||||
|
const char **words = malloc(argc * sizeof(char *));
|
||||||
|
if (!words) {
|
||||||
|
LOG_ERROR("Out of memory");
|
||||||
|
return JIM_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < argc; i++)
|
||||||
|
words[i] = Jim_GetString(argv[i], NULL);
|
||||||
|
|
||||||
struct command_invocation cmd = {
|
struct command_invocation cmd = {
|
||||||
.ctx = context,
|
.ctx = context,
|
||||||
.current = c,
|
.current = c,
|
||||||
.name = c->name,
|
.name = c->name,
|
||||||
.argc = num_words - 1,
|
.argc = argc - 1,
|
||||||
.argv = words + 1,
|
.argv = words + 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -526,7 +539,8 @@ static int run_command(struct command_context *context,
|
||||||
}
|
}
|
||||||
Jim_DecrRefCount(context->interp, cmd.output);
|
Jim_DecrRefCount(context->interp, cmd.output);
|
||||||
|
|
||||||
return retval;
|
free(words);
|
||||||
|
return command_retval_set(interp, retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
int command_run_line(struct command_context *context, char *line)
|
int command_run_line(struct command_context *context, char *line)
|
||||||
|
@ -867,27 +881,6 @@ static char *alloc_concatenate_strings(int argc, Jim_Obj * const *argv)
|
||||||
return all;
|
return all;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int exec_command(Jim_Interp *interp, struct command_context *cmd_ctx,
|
|
||||||
struct command *c, int argc, Jim_Obj * const *argv)
|
|
||||||
{
|
|
||||||
if (c->jim_handler)
|
|
||||||
return c->jim_handler(interp, argc, argv);
|
|
||||||
|
|
||||||
/* use c->handler */
|
|
||||||
const char **words = malloc(argc * sizeof(char *));
|
|
||||||
if (!words) {
|
|
||||||
LOG_ERROR("Out of memory");
|
|
||||||
return JIM_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < argc; i++)
|
|
||||||
words[i] = Jim_GetString(argv[i], NULL);
|
|
||||||
|
|
||||||
int retval = run_command(cmd_ctx, c, words, argc);
|
|
||||||
free(words);
|
|
||||||
return command_retval_set(interp, retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int jim_command_dispatch(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
|
static int jim_command_dispatch(Jim_Interp *interp, int argc, Jim_Obj * const *argv)
|
||||||
{
|
{
|
||||||
/* check subcommands */
|
/* check subcommands */
|
||||||
|
|
Loading…
Reference in New Issue