diff options
Diffstat (limited to 'cmd-bind-key.c')
-rw-r--r-- | cmd-bind-key.c | 27 |
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); } |