shell: Refactor command execution to enable raw arguments
Added special flag that can be used to indicate that optional arguments are passed without any parsing (e.g. quotation marks removal). Modified execute command to parse command line buffer argument by argument. After this change it is possible to forward whole command to command handler (using select). Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
This commit is contained in:
parent
2c2771970e
commit
512de5ecac
5 changed files with 184 additions and 113 deletions
|
@ -393,8 +393,9 @@ static int cmd_select(const struct shell *shell, size_t argc, char **argv)
|
|||
|
||||
argc--;
|
||||
argv = argv + 1;
|
||||
candidate = shell_get_last_command(shell, argc, argv, &matching_argc,
|
||||
&entry, true);
|
||||
candidate = shell_get_last_command(shell->ctx->selected_cmd,
|
||||
argc, (const char **)argv,
|
||||
&matching_argc, &entry, true);
|
||||
|
||||
if ((candidate != NULL) && !no_args(candidate)
|
||||
&& (argc == matching_argc)) {
|
||||
|
@ -453,10 +454,12 @@ SHELL_STATIC_SUBCMD_SET_CREATE(m_sub_resize,
|
|||
|
||||
SHELL_CMD_ARG_REGISTER(clear, NULL, SHELL_HELP_CLEAR, cmd_clear, 1, 0);
|
||||
SHELL_CMD_REGISTER(shell, &m_sub_shell, SHELL_HELP_SHELL, NULL);
|
||||
SHELL_CMD_ARG_REGISTER(help, NULL, SHELL_HELP_HELP, cmd_help, 1, 255);
|
||||
SHELL_CMD_ARG_REGISTER(help, NULL, SHELL_HELP_HELP, cmd_help,
|
||||
1, SHELL_OPT_ARG_CHECK_SKIP);
|
||||
SHELL_COND_CMD_ARG_REGISTER(CONFIG_SHELL_HISTORY, history, NULL,
|
||||
SHELL_HELP_HISTORY, cmd_history, 1, 0);
|
||||
SHELL_COND_CMD_ARG_REGISTER(CONFIG_SHELL_CMDS_RESIZE, resize, &m_sub_resize,
|
||||
SHELL_HELP_RESIZE, cmd_resize, 1, 1);
|
||||
SHELL_COND_CMD_ARG_REGISTER(CONFIG_SHELL_CMDS_SELECT, select, NULL,
|
||||
SHELL_HELP_SELECT, cmd_select, 2, 255);
|
||||
SHELL_HELP_SELECT, cmd_select, 2,
|
||||
SHELL_OPT_ARG_CHECK_SKIP);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue