version 1.284, 2019/05/20 11:46:06 |
version 1.285, 2019/05/25 07:18:20 |
|
|
struct msg_command_data data; |
struct msg_command_data data; |
char *buf; |
char *buf; |
size_t len; |
size_t len; |
struct cmd_list *cmdlist = NULL; |
|
int argc; |
int argc; |
char **argv, *cause; |
char **argv, *cause; |
|
struct cmd_parse_result *pr; |
|
|
if (c->flags & CLIENT_EXIT) |
if (c->flags & CLIENT_EXIT) |
return; |
return; |
|
|
*argv = xstrdup("new-session"); |
*argv = xstrdup("new-session"); |
} |
} |
|
|
if ((cmdlist = cmd_list_parse(argc, argv, NULL, 0, &cause)) == NULL) { |
pr = cmd_parse_from_arguments(argc, argv, NULL); |
cmd_free_argv(argc, argv); |
switch (pr->status) { |
|
case CMD_PARSE_EMPTY: |
|
cause = xstrdup("empty command"); |
goto error; |
goto error; |
|
case CMD_PARSE_ERROR: |
|
cause = pr->error; |
|
goto error; |
|
case CMD_PARSE_SUCCESS: |
|
break; |
} |
} |
cmd_free_argv(argc, argv); |
cmd_free_argv(argc, argv); |
|
|
cmdq_append(c, cmdq_get_command(cmdlist, NULL, NULL, 0)); |
cmdq_append(c, cmdq_get_command(pr->cmdlist, NULL, NULL, 0)); |
cmdq_append(c, cmdq_get_callback(server_client_command_done, NULL)); |
cmdq_append(c, cmdq_get_callback(server_client_command_done, NULL)); |
cmd_list_free(cmdlist); |
|
|
cmd_list_free(pr->cmdlist); |
return; |
return; |
|
|
error: |
error: |
|
cmd_free_argv(argc, argv); |
|
|
cmdq_append(c, cmdq_get_error(cause)); |
cmdq_append(c, cmdq_get_error(cause)); |
free(cause); |
free(cause); |
|
|
if (cmdlist != NULL) |
|
cmd_list_free(cmdlist); |
|
|
|
c->flags |= CLIENT_EXIT; |
c->flags |= CLIENT_EXIT; |
} |
} |