diff options
Diffstat (limited to 'sway/commands.c')
-rw-r--r-- | sway/commands.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/sway/commands.c b/sway/commands.c index 2160a970..8d003dfa 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -1,4 +1,3 @@ | |||
1 | #define _POSIX_C_SOURCE 200809 | ||
2 | #include <ctype.h> | 1 | #include <ctype.h> |
3 | #include <stdarg.h> | 2 | #include <stdarg.h> |
4 | #include <stdlib.h> | 3 | #include <stdlib.h> |
@@ -104,6 +103,7 @@ static const struct cmd_handler handlers[] = { | |||
104 | static const struct cmd_handler config_handlers[] = { | 103 | static const struct cmd_handler config_handlers[] = { |
105 | { "default_orientation", cmd_default_orientation }, | 104 | { "default_orientation", cmd_default_orientation }, |
106 | { "include", cmd_include }, | 105 | { "include", cmd_include }, |
106 | { "primary_selection", cmd_primary_selection }, | ||
107 | { "swaybg_command", cmd_swaybg_command }, | 107 | { "swaybg_command", cmd_swaybg_command }, |
108 | { "swaynag_command", cmd_swaynag_command }, | 108 | { "swaynag_command", cmd_swaynag_command }, |
109 | { "workspace_layout", cmd_workspace_layout }, | 109 | { "workspace_layout", cmd_workspace_layout }, |
@@ -147,7 +147,7 @@ static int handler_compare(const void *_a, const void *_b) { | |||
147 | return strcasecmp(a->command, b->command); | 147 | return strcasecmp(a->command, b->command); |
148 | } | 148 | } |
149 | 149 | ||
150 | const struct cmd_handler *find_handler(char *line, | 150 | const struct cmd_handler *find_handler(const char *line, |
151 | const struct cmd_handler *handlers, size_t handlers_size) { | 151 | const struct cmd_handler *handlers, size_t handlers_size) { |
152 | if (!handlers || !handlers_size) { | 152 | if (!handlers || !handlers_size) { |
153 | return NULL; | 153 | return NULL; |
@@ -380,10 +380,13 @@ struct cmd_results *config_command(char *exec, char **new_block) { | |||
380 | sway_log(SWAY_INFO, "Config command: %s", exec); | 380 | sway_log(SWAY_INFO, "Config command: %s", exec); |
381 | const struct cmd_handler *handler = find_core_handler(argv[0]); | 381 | const struct cmd_handler *handler = find_core_handler(argv[0]); |
382 | if (!handler || !handler->handle) { | 382 | if (!handler || !handler->handle) { |
383 | const char *error = handler | 383 | if (handler) { |
384 | ? "Command '%s' is shimmed, but unimplemented" | 384 | results = cmd_results_new(CMD_INVALID, |
385 | : "Unknown/invalid command '%s'"; | 385 | "Command '%s' is shimmed, but unimplemented", argv[0]); |
386 | results = cmd_results_new(CMD_INVALID, error, argv[0]); | 386 | } else { |
387 | results = cmd_results_new(CMD_INVALID, | ||
388 | "Unknown/invalid command '%s'", argv[0]); | ||
389 | } | ||
387 | goto cleanup; | 390 | goto cleanup; |
388 | } | 391 | } |
389 | 392 | ||
@@ -485,20 +488,10 @@ struct cmd_results *cmd_results_new(enum cmd_status status, | |||
485 | } | 488 | } |
486 | results->status = status; | 489 | results->status = status; |
487 | if (format) { | 490 | if (format) { |
488 | char *error = NULL; | ||
489 | va_list args; | 491 | va_list args; |
490 | va_start(args, format); | 492 | va_start(args, format); |
491 | int slen = vsnprintf(NULL, 0, format, args); | 493 | results->error = vformat_str(format, args); |
492 | va_end(args); | 494 | va_end(args); |
493 | if (slen > 0) { | ||
494 | error = malloc(slen + 1); | ||
495 | if (error != NULL) { | ||
496 | va_start(args, format); | ||
497 | vsnprintf(error, slen + 1, format, args); | ||
498 | va_end(args); | ||
499 | } | ||
500 | } | ||
501 | results->error = error; | ||
502 | } else { | 495 | } else { |
503 | results->error = NULL; | 496 | results->error = NULL; |
504 | } | 497 | } |