diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-05-28 13:33:02 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-05-28 13:33:02 +1000 |
commit | 508a76695ca1beed7d02b492f784b8ba4df062d0 (patch) | |
tree | 641964e8ddb17d8c21c482d4f50ae2d0ed9e8243 /swaymsg/main.c | |
parent | Merge pull request #2050 from smlx/focus-fix (diff) | |
download | sway-508a76695ca1beed7d02b492f784b8ba4df062d0.tar.gz sway-508a76695ca1beed7d02b492f784b8ba4df062d0.tar.zst sway-508a76695ca1beed7d02b492f784b8ba4df062d0.zip |
swaymsg: Fix exit code
Diffstat (limited to 'swaymsg/main.c')
-rw-r--r-- | swaymsg/main.c | 21 |
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 | ||
22 | static bool success(json_object *r, bool fallback) { | 23 | static 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 | ||
31 | static void pretty_print_cmd(json_object *r) { | 44 | static void pretty_print_cmd(json_object *r) { |