add struct command_invocation for COMMAND_HANDLER

Adds the command_invocation structure to encapsulate parameters for
all COMMAND_HANDLER routines.  Rather than passing several arguments
to each successive subroutine, a single pointer may be passed around.

Changes the CMD_* macros to reference the new fields.

Updates run_command to create an instance and pass it to the handler.
This commit is contained in:
Zachary T Welch
2009-11-15 04:21:17 -08:00
parent 2861877b32
commit be084414ba
2 changed files with 21 additions and 9 deletions

View File

@@ -447,9 +447,12 @@ static int run_command(struct command_context *context,
return ERROR_FAIL;
}
unsigned argc = num_words - start_word - 1;
const char **args = words + start_word + 1;
int retval = c->handler(context, args, argc);
struct command_invocation cmd = {
.ctx = context,
.argc = num_words - start_word - 1,
.argv = words + start_word + 1,
};
int retval = c->handler(&cmd);
if (retval == ERROR_COMMAND_SYNTAX_ERROR)
{
/* Print help for command */