diff options
-rw-r--r-- | include/sway/commands.h | 3 | ||||
-rw-r--r-- | sway/commands.c | 43 | ||||
-rw-r--r-- | sway/commands/bar/bindsym.c | 2 | ||||
-rw-r--r-- | sway/commands/bar/hidden_state.c | 2 | ||||
-rw-r--r-- | sway/commands/bar/mode.c | 2 | ||||
-rw-r--r-- | sway/commands/bind.c | 2 | ||||
-rw-r--r-- | sway/commands/exec_always.c | 8 | ||||
-rw-r--r-- | sway/commands/fullscreen.c | 2 | ||||
-rw-r--r-- | sway/commands/layout.c | 2 | ||||
-rw-r--r-- | sway/commands/opacity.c | 2 |
10 files changed, 27 insertions, 41 deletions
diff --git a/include/sway/commands.h b/include/sway/commands.h index 2f6d31b1..6606775a 100644 --- a/include/sway/commands.h +++ b/include/sway/commands.h | |||
@@ -39,9 +39,8 @@ struct cmd_results { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | enum expected_args { | 41 | enum expected_args { |
42 | EXPECTED_MORE_THAN, | ||
43 | EXPECTED_AT_LEAST, | 42 | EXPECTED_AT_LEAST, |
44 | EXPECTED_LESS_THAN, | 43 | EXPECTED_AT_MOST, |
45 | EXPECTED_EQUAL_TO | 44 | EXPECTED_EQUAL_TO |
46 | }; | 45 | }; |
47 | 46 | ||
diff --git a/sway/commands.c b/sway/commands.c index 3f416afc..37c7169a 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -18,41 +18,28 @@ | |||
18 | 18 | ||
19 | // Returns error object, or NULL if check succeeds. | 19 | // Returns error object, or NULL if check succeeds. |
20 | struct cmd_results *checkarg(int argc, const char *name, enum expected_args type, int val) { | 20 | struct cmd_results *checkarg(int argc, const char *name, enum expected_args type, int val) { |
21 | struct cmd_results *error = NULL; | 21 | const char *error_name = NULL; |
22 | switch (type) { | 22 | switch (type) { |
23 | case EXPECTED_MORE_THAN: | ||
24 | if (argc > val) { | ||
25 | return NULL; | ||
26 | } | ||
27 | error = cmd_results_new(CMD_INVALID, name, "Invalid %s command " | ||
28 | "(expected more than %d argument%s, got %d)", | ||
29 | name, val, (char*[2]){"s", ""}[argc==1], argc); | ||
30 | break; | ||
31 | case EXPECTED_AT_LEAST: | 23 | case EXPECTED_AT_LEAST: |
32 | if (argc >= val) { | 24 | if (argc < val) { |
33 | return NULL; | 25 | error_name = "at least "; |
34 | } | 26 | } |
35 | error = cmd_results_new(CMD_INVALID, name, "Invalid %s command " | ||
36 | "(expected at least %d argument%s, got %d)", | ||
37 | name, val, (char*[2]){"s", ""}[argc==1], argc); | ||
38 | break; | 27 | break; |
39 | case EXPECTED_LESS_THAN: | 28 | case EXPECTED_AT_MOST: |
40 | if (argc < val) { | 29 | if (argc > val) { |
41 | return NULL; | 30 | error_name = "at most "; |
42 | }; | 31 | } |
43 | error = cmd_results_new(CMD_INVALID, name, "Invalid %s command " | ||
44 | "(expected less than %d argument%s, got %d)", | ||
45 | name, val, (char*[2]){"s", ""}[argc==1], argc); | ||
46 | break; | 32 | break; |
47 | case EXPECTED_EQUAL_TO: | 33 | case EXPECTED_EQUAL_TO: |
48 | if (argc == val) { | 34 | if (argc != val) { |
49 | return NULL; | 35 | error_name = ""; |
50 | }; | 36 | } |
51 | error = cmd_results_new(CMD_INVALID, name, "Invalid %s command " | ||
52 | "(expected %d arguments, got %d)", name, val, argc); | ||
53 | break; | ||
54 | } | 37 | } |
55 | return error; | 38 | return error_name ? |
39 | cmd_results_new(CMD_INVALID, name, "Invalid %s command " | ||
40 | "(expected %s%d argument%s, got %d)", | ||
41 | name, error_name, val, val != 1 ? "s" : "", argc) | ||
42 | : NULL; | ||
56 | } | 43 | } |
57 | 44 | ||
58 | void apply_seat_config(struct seat_config *seat_config) { | 45 | void apply_seat_config(struct seat_config *seat_config) { |
diff --git a/sway/commands/bar/bindsym.c b/sway/commands/bar/bindsym.c index 4eea3e6a..965c8903 100644 --- a/sway/commands/bar/bindsym.c +++ b/sway/commands/bar/bindsym.c | |||
@@ -10,7 +10,7 @@ | |||
10 | 10 | ||
11 | struct cmd_results *bar_cmd_bindsym(int argc, char **argv) { | 11 | struct cmd_results *bar_cmd_bindsym(int argc, char **argv) { |
12 | struct cmd_results *error = NULL; | 12 | struct cmd_results *error = NULL; |
13 | if ((error = checkarg(argc, "bar bindsym", EXPECTED_MORE_THAN, 1))) { | 13 | if ((error = checkarg(argc, "bar bindsym", EXPECTED_AT_LEAST, 2))) { |
14 | return error; | 14 | return error; |
15 | } | 15 | } |
16 | if (!config->current_bar) { | 16 | if (!config->current_bar) { |
diff --git a/sway/commands/bar/hidden_state.c b/sway/commands/bar/hidden_state.c index 28adf6c7..5be6c2dc 100644 --- a/sway/commands/bar/hidden_state.c +++ b/sway/commands/bar/hidden_state.c | |||
@@ -40,7 +40,7 @@ struct cmd_results *bar_cmd_hidden_state(int argc, char **argv) { | |||
40 | if ((error = checkarg(argc, "hidden_state", EXPECTED_AT_LEAST, 1))) { | 40 | if ((error = checkarg(argc, "hidden_state", EXPECTED_AT_LEAST, 1))) { |
41 | return error; | 41 | return error; |
42 | } | 42 | } |
43 | if ((error = checkarg(argc, "hidden_state", EXPECTED_LESS_THAN, 3))) { | 43 | if ((error = checkarg(argc, "hidden_state", EXPECTED_AT_MOST, 2))) { |
44 | return error; | 44 | return error; |
45 | } | 45 | } |
46 | if (config->reading && argc > 1) { | 46 | if (config->reading && argc > 1) { |
diff --git a/sway/commands/bar/mode.c b/sway/commands/bar/mode.c index dbdd3897..2cba785e 100644 --- a/sway/commands/bar/mode.c +++ b/sway/commands/bar/mode.c | |||
@@ -41,7 +41,7 @@ struct cmd_results *bar_cmd_mode(int argc, char **argv) { | |||
41 | if ((error = checkarg(argc, "mode", EXPECTED_AT_LEAST, 1))) { | 41 | if ((error = checkarg(argc, "mode", EXPECTED_AT_LEAST, 1))) { |
42 | return error; | 42 | return error; |
43 | } | 43 | } |
44 | if ((error = checkarg(argc, "mode", EXPECTED_LESS_THAN, 3))) { | 44 | if ((error = checkarg(argc, "mode", EXPECTED_AT_MOST, 2))) { |
45 | return error; | 45 | return error; |
46 | } | 46 | } |
47 | if (config->reading && argc > 1) { | 47 | if (config->reading && argc > 1) { |
diff --git a/sway/commands/bind.c b/sway/commands/bind.c index 5832d01e..a9de227f 100644 --- a/sway/commands/bind.c +++ b/sway/commands/bind.c | |||
@@ -145,7 +145,7 @@ static struct cmd_results *cmd_bindsym_or_bindcode(int argc, char **argv, | |||
145 | const char *bindtype = bindcode ? "bindcode" : "bindsym"; | 145 | const char *bindtype = bindcode ? "bindcode" : "bindsym"; |
146 | 146 | ||
147 | struct cmd_results *error = NULL; | 147 | struct cmd_results *error = NULL; |
148 | if ((error = checkarg(argc, bindtype, EXPECTED_MORE_THAN, 1))) { | 148 | if ((error = checkarg(argc, bindtype, EXPECTED_AT_LEAST, 2))) { |
149 | return error; | 149 | return error; |
150 | } | 150 | } |
151 | 151 | ||
diff --git a/sway/commands/exec_always.c b/sway/commands/exec_always.c index de78dd83..8bdeceeb 100644 --- a/sway/commands/exec_always.c +++ b/sway/commands/exec_always.c | |||
@@ -16,7 +16,7 @@ | |||
16 | struct cmd_results *cmd_exec_always(int argc, char **argv) { | 16 | struct cmd_results *cmd_exec_always(int argc, char **argv) { |
17 | struct cmd_results *error = NULL; | 17 | struct cmd_results *error = NULL; |
18 | if (!config->active) return cmd_results_new(CMD_DEFER, NULL, NULL); | 18 | if (!config->active) return cmd_results_new(CMD_DEFER, NULL, NULL); |
19 | if ((error = checkarg(argc, "exec_always", EXPECTED_MORE_THAN, 0))) { | 19 | if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { |
20 | return error; | 20 | return error; |
21 | } | 21 | } |
22 | 22 | ||
@@ -24,7 +24,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) { | |||
24 | if (strcmp(argv[0], "--no-startup-id") == 0) { | 24 | if (strcmp(argv[0], "--no-startup-id") == 0) { |
25 | wlr_log(WLR_INFO, "exec switch '--no-startup-id' not supported, ignored."); | 25 | wlr_log(WLR_INFO, "exec switch '--no-startup-id' not supported, ignored."); |
26 | --argc; ++argv; | 26 | --argc; ++argv; |
27 | if ((error = checkarg(argc, "exec_always", EXPECTED_MORE_THAN, 0))) { | 27 | if ((error = checkarg(argc, argv[-1], EXPECTED_AT_LEAST, 1))) { |
28 | return error; | 28 | return error; |
29 | } | 29 | } |
30 | } | 30 | } |
@@ -71,7 +71,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) { | |||
71 | } else if (pid < 0) { | 71 | } else if (pid < 0) { |
72 | close(fd[0]); | 72 | close(fd[0]); |
73 | close(fd[1]); | 73 | close(fd[1]); |
74 | return cmd_results_new(CMD_FAILURE, "exec_always", "fork() failed"); | 74 | return cmd_results_new(CMD_FAILURE, argv[-1], "fork() failed"); |
75 | } | 75 | } |
76 | close(fd[1]); // close write | 76 | close(fd[1]); // close write |
77 | ssize_t s = 0; | 77 | ssize_t s = 0; |
@@ -85,7 +85,7 @@ struct cmd_results *cmd_exec_always(int argc, char **argv) { | |||
85 | wlr_log(WLR_DEBUG, "Child process created with pid %d", child); | 85 | wlr_log(WLR_DEBUG, "Child process created with pid %d", child); |
86 | root_record_workspace_pid(child); | 86 | root_record_workspace_pid(child); |
87 | } else { | 87 | } else { |
88 | return cmd_results_new(CMD_FAILURE, "exec_always", | 88 | return cmd_results_new(CMD_FAILURE, argv[-1], |
89 | "Second fork() failed"); | 89 | "Second fork() failed"); |
90 | } | 90 | } |
91 | 91 | ||
diff --git a/sway/commands/fullscreen.c b/sway/commands/fullscreen.c index 22d747b9..0204a73c 100644 --- a/sway/commands/fullscreen.c +++ b/sway/commands/fullscreen.c | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | struct cmd_results *cmd_fullscreen(int argc, char **argv) { | 10 | struct cmd_results *cmd_fullscreen(int argc, char **argv) { |
11 | struct cmd_results *error = NULL; | 11 | struct cmd_results *error = NULL; |
12 | if ((error = checkarg(argc, "fullscreen", EXPECTED_LESS_THAN, 2))) { | 12 | if ((error = checkarg(argc, "fullscreen", EXPECTED_AT_MOST, 1))) { |
13 | return error; | 13 | return error; |
14 | } | 14 | } |
15 | struct sway_node *node = config->handler_context.node; | 15 | struct sway_node *node = config->handler_context.node; |
diff --git a/sway/commands/layout.c b/sway/commands/layout.c index c2ce2e78..65f67af8 100644 --- a/sway/commands/layout.c +++ b/sway/commands/layout.c | |||
@@ -96,7 +96,7 @@ static enum sway_container_layout get_layout(int argc, char **argv, | |||
96 | 96 | ||
97 | struct cmd_results *cmd_layout(int argc, char **argv) { | 97 | struct cmd_results *cmd_layout(int argc, char **argv) { |
98 | struct cmd_results *error = NULL; | 98 | struct cmd_results *error = NULL; |
99 | if ((error = checkarg(argc, "layout", EXPECTED_MORE_THAN, 0))) { | 99 | if ((error = checkarg(argc, "layout", EXPECTED_AT_LEAST, 1))) { |
100 | return error; | 100 | return error; |
101 | } | 101 | } |
102 | struct sway_container *container = config->handler_context.container; | 102 | struct sway_container *container = config->handler_context.container; |
diff --git a/sway/commands/opacity.c b/sway/commands/opacity.c index 4e4fc994..8c45b528 100644 --- a/sway/commands/opacity.c +++ b/sway/commands/opacity.c | |||
@@ -15,7 +15,7 @@ static bool parse_opacity(const char *opacity, float *val) { | |||
15 | 15 | ||
16 | struct cmd_results *cmd_opacity(int argc, char **argv) { | 16 | struct cmd_results *cmd_opacity(int argc, char **argv) { |
17 | struct cmd_results *error = NULL; | 17 | struct cmd_results *error = NULL; |
18 | if ((error = checkarg(argc, "layout", EXPECTED_EQUAL_TO, 1))) { | 18 | if ((error = checkarg(argc, "opacity", EXPECTED_EQUAL_TO, 1))) { |
19 | return error; | 19 | return error; |
20 | } | 20 | } |
21 | 21 | ||