aboutsummaryrefslogtreecommitdiff
path: root/cmd-bind-key.c
diff options
context:
space:
mode:
Diffstat (limited to 'cmd-bind-key.c')
-rw-r--r--cmd-bind-key.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/cmd-bind-key.c b/cmd-bind-key.c
index 97af9f57..ed2f69d1 100644
--- a/cmd-bind-key.c
+++ b/cmd-bind-key.c
@@ -44,11 +44,10 @@ const struct cmd_entry cmd_bind_key_entry = {
static enum cmd_retval
cmd_bind_key_exec(struct cmd *self, struct cmdq_item *item)
{
- struct args *args = self->args;
- char *cause;
- struct cmd_list *cmdlist;
- key_code key;
- const char *tablename;
+ struct args *args = self->args;
+ key_code key;
+ const char *tablename;
+ struct cmd_parse_result *pr;
key = key_string_lookup_string(args->argv[0]);
if (key == KEYC_NONE || key == KEYC_UNKNOWN) {
@@ -63,14 +62,18 @@ cmd_bind_key_exec(struct cmd *self, struct cmdq_item *item)
else
tablename = "prefix";
- cmdlist = cmd_list_parse(args->argc - 1, args->argv + 1, NULL, 0,
- &cause);
- if (cmdlist == NULL) {
- cmdq_error(item, "%s", cause);
- free(cause);
+ pr = cmd_parse_from_arguments(args->argc - 1, args->argv + 1, NULL);
+ switch (pr->status) {
+ case CMD_PARSE_EMPTY:
+ cmdq_error(item, "empty command");
return (CMD_RETURN_ERROR);
+ case CMD_PARSE_ERROR:
+ cmdq_error(item, "%s", pr->error);
+ free(pr->error);
+ return (CMD_RETURN_ERROR);
+ case CMD_PARSE_SUCCESS:
+ break;
}
-
- key_bindings_add(tablename, key, args_has(args, 'r'), cmdlist);
+ key_bindings_add(tablename, key, args_has(args, 'r'), pr->cmdlist);
return (CMD_RETURN_NORMAL);
}