From 03d173cbd8e72c356512a0e19e356b07d518627a Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 25 Aug 2021 08:51:55 +0000 Subject: Validate command argument types (string or command list) and give more useful error messages. --- cmd-bind-key.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'cmd-bind-key.c') diff --git a/cmd-bind-key.c b/cmd-bind-key.c index bb905bce..778d655b 100644 --- a/cmd-bind-key.c +++ b/cmd-bind-key.c @@ -27,13 +27,16 @@ * Bind a key to a command. */ -static enum cmd_retval cmd_bind_key_exec(struct cmd *, struct cmdq_item *); +static enum args_parse_type cmd_bind_key_args_parse(struct args *, u_int, + char **); +static enum cmd_retval cmd_bind_key_exec(struct cmd *, + struct cmdq_item *); const struct cmd_entry cmd_bind_key_entry = { .name = "bind-key", .alias = "bind", - .args = { "nrN:T:", 1, -1, NULL }, + .args = { "nrN:T:", 1, -1, cmd_bind_key_args_parse }, .usage = "[-nr] [-T key-table] [-N note] key " "[command [arguments]]", @@ -41,6 +44,15 @@ const struct cmd_entry cmd_bind_key_entry = { .exec = cmd_bind_key_exec }; +static enum args_parse_type +cmd_bind_key_args_parse(__unused struct args *args, u_int idx, + __unused char **cause) +{ + if (idx == 1) + return (ARGS_PARSE_COMMANDS_OR_STRING); + return (ARGS_PARSE_STRING); +} + static enum cmd_retval cmd_bind_key_exec(struct cmd *self, struct cmdq_item *item) { -- cgit From a3c6057b514eb575ba40fc2f8b2d471aea9909fc Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 25 Aug 2021 09:18:08 +0000 Subject: bind-key needs to allow commands for any argument for the moment. --- cmd-bind-key.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'cmd-bind-key.c') diff --git a/cmd-bind-key.c b/cmd-bind-key.c index 778d655b..be0ae40e 100644 --- a/cmd-bind-key.c +++ b/cmd-bind-key.c @@ -45,12 +45,10 @@ const struct cmd_entry cmd_bind_key_entry = { }; static enum args_parse_type -cmd_bind_key_args_parse(__unused struct args *args, u_int idx, +cmd_bind_key_args_parse(__unused struct args *args, __unused u_int idx, __unused char **cause) { - if (idx == 1) - return (ARGS_PARSE_COMMANDS_OR_STRING); - return (ARGS_PARSE_STRING); + return (ARGS_PARSE_COMMANDS_OR_STRING); } static enum cmd_retval -- cgit