aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands.c
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-10-23 10:32:05 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-10-23 10:51:08 +0100
commit000d96e52539fd6b8ecf6f6d0d399a1bedbbb9d9 (patch)
tree57529ef7a6f82b377069c469bd66d40b5bb8b19f /sway/commands.c
parentcommands: remove EXPECTED_MORE_THAN (diff)
downloadsway-000d96e52539fd6b8ecf6f6d0d399a1bedbbb9d9.tar.gz
sway-000d96e52539fd6b8ecf6f6d0d399a1bedbbb9d9.tar.zst
sway-000d96e52539fd6b8ecf6f6d0d399a1bedbbb9d9.zip
commands: clean-up checkarg function
Consolidates logic and fixes mistake that used argc instead of val for determining plural.
Diffstat (limited to 'sway/commands.c')
-rw-r--r--sway/commands.c33
1 files changed, 14 insertions, 19 deletions
diff --git a/sway/commands.c b/sway/commands.c
index 4c1b34d5..6a5eb3dd 100644
--- a/sway/commands.c
+++ b/sway/commands.c
@@ -18,33 +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_AT_LEAST: 23 case EXPECTED_AT_LEAST:
24 if (argc >= val) { 24 if (argc < val) {
25 return NULL; 25 error_name = "at least ";
26 } 26 }
27 error = cmd_results_new(CMD_INVALID, name, "Invalid %s command "
28 "(expected at least %d argument%s, got %d)",
29 name, val, (char*[2]){"s", ""}[argc==1], argc);
30 break; 27 break;
31 case EXPECTED_LESS_THAN: 28 case EXPECTED_LESS_THAN:
32 if (argc < val) { 29 if (argc >= val) {
33 return NULL; 30 error_name = "less than ";
34 }; 31 }
35 error = cmd_results_new(CMD_INVALID, name, "Invalid %s command "
36 "(expected less than %d argument%s, got %d)",
37 name, val, (char*[2]){"s", ""}[argc==1], argc);
38 break; 32 break;
39 case EXPECTED_EQUAL_TO: 33 case EXPECTED_EQUAL_TO:
40 if (argc == val) { 34 if (argc != val) {
41 return NULL; 35 error_name = "";
42 }; 36 }
43 error = cmd_results_new(CMD_INVALID, name, "Invalid %s command "
44 "(expected %d arguments, got %d)", name, val, argc);
45 break;
46 } 37 }
47 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;
48} 43}
49 44
50void apply_seat_config(struct seat_config *seat_config) { 45void apply_seat_config(struct seat_config *seat_config) {