mirror of
https://github.com/tmux/tmux.git
synced 2026-10-09 11:44:23 +00:00
Default command tree bits.
This commit is contained in:
@@ -763,6 +763,8 @@ cmd_parse_from_arguments(struct args_value *values, u_int count)
|
|||||||
case ARGS_COMMANDS:
|
case ARGS_COMMANDS:
|
||||||
child = cmd_parse_new_commands_node(values[i].cmd, 0);
|
child = cmd_parse_new_commands_node(values[i].cmd, 0);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
fatalx("unknown argument type");
|
||||||
}
|
}
|
||||||
TAILQ_INSERT_TAIL(&cmd->children, child, entry);
|
TAILQ_INSERT_TAIL(&cmd->children, child, entry);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2578,7 +2578,10 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg)
|
|||||||
size_t len;
|
size_t len;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
char **argv, *cause;
|
char **argv, *cause;
|
||||||
struct cmdq_item *new_item;
|
struct cmdq_item *item;
|
||||||
|
struct cmd_invoke_input ci = { 0 };
|
||||||
|
struct args_value *values;
|
||||||
|
struct cmd_parse_tree *tree;
|
||||||
|
|
||||||
if (c->flags & CLIENT_EXIT)
|
if (c->flags & CLIENT_EXIT)
|
||||||
return (0);
|
return (0);
|
||||||
@@ -2598,40 +2601,19 @@ server_client_dispatch_command(struct client *c, struct imsg *imsg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
argc = data.argc;
|
argc = data.argc;
|
||||||
if (argc == 0) {
|
if (argc == 0)
|
||||||
new_item = cmdq_get_callback(server_client_default_command,
|
item = cmdq_get_callback(server_client_default_command, NULL);
|
||||||
NULL);
|
else {
|
||||||
} else {
|
|
||||||
#if 0 /* XXX: command parser conversion */
|
|
||||||
struct cmd_parse_result *pr;
|
|
||||||
struct args_value *values;
|
|
||||||
|
|
||||||
values = args_from_vector(argc, argv);
|
values = args_from_vector(argc, argv);
|
||||||
pr = cmd_parse_from_arguments(values, argc, NULL);
|
tree = cmd_parse_from_arguments(values, argc);
|
||||||
switch (pr->status) {
|
|
||||||
case CMD_PARSE_ERROR:
|
|
||||||
cause = pr->error;
|
|
||||||
goto error;
|
|
||||||
case CMD_PARSE_SUCCESS:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
args_free_values(values, argc);
|
args_free_values(values, argc);
|
||||||
free(values);
|
free(values);
|
||||||
cmd_free_argv(argc, argv);
|
cmd_free_argv(argc, argv);
|
||||||
if ((c->flags & CLIENT_READONLY) &&
|
|
||||||
!cmd_list_all_have(pr->cmdlist, CMD_READONLY)) {
|
item = cmd_invoke_get(tree, NULL, &ci);
|
||||||
new_item = cmdq_get_callback(server_client_read_only,
|
cmd_parse_free(tree);
|
||||||
NULL);
|
|
||||||
} else
|
|
||||||
new_item = cmdq_get_command(pr->cmdlist, NULL);
|
|
||||||
cmd_list_free(pr->cmdlist);
|
|
||||||
#else
|
|
||||||
cause = xstrdup(
|
|
||||||
"XXX: command parser conversion not done for client commands");
|
|
||||||
goto error;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
cmdq_append(c, new_item);
|
cmdq_append(c, item);
|
||||||
cmdq_append(c, cmdq_get_callback(server_client_command_done, NULL));
|
cmdq_append(c, cmdq_get_callback(server_client_command_done, NULL));
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
|
|||||||
Reference in New Issue
Block a user