version 1.62, 2021/08/25 08:51:55 |
version 1.63, 2021/08/27 17:25:55 |
|
|
cmd_command_prompt_callback(struct client *c, void *data, const char *s, |
cmd_command_prompt_callback(struct client *c, void *data, const char *s, |
int done) |
int done) |
{ |
{ |
struct cmd_command_prompt_cdata *cdata = data; |
struct cmd_command_prompt_cdata *cdata = data; |
char *error; |
char *error; |
struct cmdq_item *item = cdata->item, *new_item; |
struct cmdq_item *item = cdata->item, *new_item; |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
struct cmd_command_prompt_prompt *prompt; |
struct cmd_command_prompt_prompt *prompt; |
|
int argc = 0; |
|
char **argv = NULL; |
|
|
if (s == NULL) |
if (s == NULL) |
goto out; |
goto out; |
|
|
if (cdata->flags & PROMPT_INCREMENTAL) |
if (cdata->flags & PROMPT_INCREMENTAL) |
goto out; |
goto out; |
|
|
cmd_append_argv(&cdata->argc, &cdata->argv, s); |
|
if (++cdata->current != cdata->count) { |
if (++cdata->current != cdata->count) { |
prompt = &cdata->prompts[cdata->current]; |
prompt = &cdata->prompts[cdata->current]; |
status_prompt_update(c, prompt->prompt, prompt->input); |
status_prompt_update(c, prompt->prompt, prompt->input); |
|
|
} |
} |
} |
} |
|
|
cmdlist = args_make_commands(cdata->state, cdata->argc, cdata->argv, |
argc = cdata->argc; |
&error); |
argv = cmd_copy_argv(cdata->argc, cdata->argv); |
|
cmd_append_argv(&argc, &argv, s); |
|
if (done) { |
|
cdata->argc = argc; |
|
cdata->argv = cmd_copy_argv(argc, argv); |
|
} |
|
|
|
cmdlist = args_make_commands(cdata->state, argc, argv, &error); |
if (cmdlist == NULL) { |
if (cmdlist == NULL) { |
cmdq_append(c, cmdq_get_error(error)); |
cmdq_append(c, cmdq_get_error(error)); |
free(error); |
free(error); |
|
|
new_item = cmdq_get_command(cmdlist, cmdq_get_state(item)); |
new_item = cmdq_get_command(cmdlist, cmdq_get_state(item)); |
cmdq_insert_after(item, new_item); |
cmdq_insert_after(item, new_item); |
} |
} |
|
cmd_free_argv(argc, argv); |
|
|
if (c->prompt_inputcb != cmd_command_prompt_callback) |
if (c->prompt_inputcb != cmd_command_prompt_callback) |
return (1); |
return (1); |