version 1.36, 2016/10/12 13:03:27 |
version 1.37, 2016/10/16 17:55:14 |
|
|
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
} |
} |
|
|
|
static enum cmd_retval |
|
cmd_command_prompt_error(struct cmd_q *cmdq, void *data) |
|
{ |
|
char *error = data; |
|
|
|
cmdq_error(cmdq, "%s", error); |
|
free(error); |
|
|
|
return (CMD_RETURN_NORMAL); |
|
} |
|
|
static int |
static int |
cmd_command_prompt_callback(void *data, const char *s) |
cmd_command_prompt_callback(void *data, const char *s) |
{ |
{ |
struct cmd_command_prompt_cdata *cdata = data; |
struct cmd_command_prompt_cdata *cdata = data; |
struct client *c = cdata->c; |
struct client *c = cdata->c; |
struct cmd_list *cmdlist; |
struct cmd_list *cmdlist; |
|
struct cmd_q *new_cmdq; |
char *cause, *new_template, *prompt, *ptr; |
char *cause, *new_template, *prompt, *ptr; |
char *input = NULL; |
char *input = NULL; |
|
|
|
|
|
|
if (cmd_string_parse(new_template, &cmdlist, NULL, 0, &cause) != 0) { |
if (cmd_string_parse(new_template, &cmdlist, NULL, 0, &cause) != 0) { |
if (cause != NULL) { |
if (cause != NULL) { |
*cause = toupper((u_char) *cause); |
new_cmdq = cmdq_get_callback(cmd_command_prompt_error, |
status_message_set(c, "%s", cause); |
cause); |
free(cause); |
} else |
} |
new_cmdq = NULL; |
return (0); |
} else { |
|
new_cmdq = cmdq_get_command(cmdlist, NULL, NULL, 0); |
|
cmd_list_free(cmdlist); |
} |
} |
|
|
cmdq_run(c->cmdq, cmdlist, NULL); |
if (new_cmdq != NULL) |
cmd_list_free(cmdlist); |
cmdq_append(c, new_cmdq); |
|
|
if (c->prompt_callbackfn != (void *) &cmd_command_prompt_callback) |
if (c->prompt_callbackfn != (void *)&cmd_command_prompt_callback) |
return (1); |
return (1); |
return (0); |
return (0); |
} |
} |