aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <RyanDwyer@users.noreply.github.com>2018-10-23 20:33:40 +1000
committerLibravatar GitHub <noreply@github.com>2018-10-23 20:33:40 +1000
commite33671fd9a478a917250b2e3b889c9ee0e49c65c (patch)
tree32f4a9782328486f529c09fe2bb8092c25b9993d
parentMerge pull request #2940 from RyanDwyer/fix-swaybar-crash (diff)
parentcommands: replace EXPECTED_LESS_THAN with EXPECTED_AT_MOST (diff)
downloadsway-e33671fd9a478a917250b2e3b889c9ee0e49c65c.tar.gz
sway-e33671fd9a478a917250b2e3b889c9ee0e49c65c.tar.zst
sway-e33671fd9a478a917250b2e3b889c9ee0e49c65c.zip
Merge pull request #2941 from ianyfan/commands
commands: clean up checkargs function +other small changes
-rw-r--r--include/sway/commands.h3
-rw-r--r--sway/commands.c43
-rw-r--r--sway/commands/bar/bindsym.c2
-rw-r--r--sway/commands/bar/hidden_state.c2
-rw-r--r--sway/commands/bar/mode.c2
-rw-r--r--sway/commands/bind.c2
-rw-r--r--sway/commands/exec_always.c8
-rw-r--r--sway/commands/fullscreen.c2
-rw-r--r--sway/commands/layout.c2
-rw-r--r--sway/commands/opacity.c2
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
41enum expected_args { 41enum 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.
20struct cmd_results *checkarg(int argc, const char *name, enum expected_args type, int val) { 20struct 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
58void apply_seat_config(struct seat_config *seat_config) { 45void 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
11struct cmd_results *bar_cmd_bindsym(int argc, char **argv) { 11struct 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 @@
16struct cmd_results *cmd_exec_always(int argc, char **argv) { 16struct 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
10struct cmd_results *cmd_fullscreen(int argc, char **argv) { 10struct 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
97struct cmd_results *cmd_layout(int argc, char **argv) { 97struct 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
16struct cmd_results *cmd_opacity(int argc, char **argv) { 16struct 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