From 2c6e9d7d5fbb1e897028a0d1497fc0bfece73fe1 Mon Sep 17 00:00:00 2001 From: David Eklov Date: Mon, 18 Jul 2016 00:31:56 -0500 Subject: [PATCH] Function to find and execute a command handler --- sway/commands.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sway/commands.c b/sway/commands.c index 594ce3f75..9b3745e94 100644 --- a/sway/commands.c +++ b/sway/commands.c @@ -3463,6 +3463,18 @@ static struct cmd_handler *__find_handler(char *line, const struct cmd_handler * #define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0])) +static struct cmd_results *find_and_execute_handler(int argc, char **argv, + const struct cmd_handler *handlers, + size_t handlers_size, + const char *expected_syntax) { + char *command = argv[0]; + struct cmd_handler *handler = __find_handler(command, handlers, handlers_size); + if (!handler) { + return cmd_results_new(CMD_INVALID, command, expected_syntax); + } + return handler->handle(argc - 1, argv + 1); +} + static struct cmd_handler *find_handler(char *line, enum cmd_status block) { struct cmd_handler *res = NULL;