aboutsummaryrefslogtreecommitdiffstats
path: root/swaymsg
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-28 13:33:02 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-05-28 13:33:02 +1000
commit508a76695ca1beed7d02b492f784b8ba4df062d0 (patch)
tree641964e8ddb17d8c21c482d4f50ae2d0ed9e8243 /swaymsg
parentMerge pull request #2050 from smlx/focus-fix (diff)
downloadsway-508a76695ca1beed7d02b492f784b8ba4df062d0.tar.gz
sway-508a76695ca1beed7d02b492f784b8ba4df062d0.tar.zst
sway-508a76695ca1beed7d02b492f784b8ba4df062d0.zip
swaymsg: Fix exit code
Diffstat (limited to 'swaymsg')
-rw-r--r--swaymsg/main.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/swaymsg/main.c b/swaymsg/main.c
index 89af7345..bf56b80d 100644
--- a/swaymsg/main.c
+++ b/swaymsg/main.c
@@ -19,13 +19,26 @@ void sway_terminate(int exit_code) {
19 exit(exit_code); 19 exit(exit_code);
20} 20}
21 21
22// Iterate results array and return false if any of them failed
22static bool success(json_object *r, bool fallback) { 23static bool success(json_object *r, bool fallback) {
23 json_object *success; 24 if (!json_object_is_type(r, json_type_array)) {
24 if (!json_object_object_get_ex(r, "success", &success)) {
25 return fallback; 25 return fallback;
26 } else {
27 return json_object_get_boolean(success);
28 } 26 }
27 size_t results_len = json_object_array_length(r);
28 if (!results_len) {
29 return fallback;
30 }
31 for (size_t i = 0; i < results_len; ++i) {
32 json_object *result = json_object_array_get_idx(r, i);
33 json_object *success;
34 if (!json_object_object_get_ex(result, "success", &success)) {
35 return false;
36 }
37 if (!json_object_get_boolean(success)) {
38 return false;
39 }
40 }
41 return true;
29} 42}
30 43
31static void pretty_print_cmd(json_object *r) { 44static void pretty_print_cmd(json_object *r) {