diff options
author | emersion <contact@emersion.fr> | 2018-06-30 12:28:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-06-30 12:28:17 +0100 |
commit | 09fdcfe7dfa4e53c08a5acfbfd49e1a3b4eea6e3 (patch) | |
tree | faf564fa5e998e4791f349cc905d33566ef6e8c3 /swaymsg | |
parent | d17ca5d15be2bdeb6541ce0273472ca9a98c9864 (diff) | |
parent | 354648cc073a4cb0c35862e68175b918c31c3104 (diff) |
Merge pull request #2175 from apreiml/fix-swaymsg-error-output
fix swaymsg: errors are displayed again
Diffstat (limited to 'swaymsg')
-rw-r--r-- | swaymsg/main.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/swaymsg/main.c b/swaymsg/main.c index 29f2a907..4283bf00 100644 --- a/swaymsg/main.c +++ b/swaymsg/main.c @@ -19,30 +19,40 @@ void sway_terminate(int exit_code) { exit(exit_code); } +static bool success_object(json_object *result) { + json_object *success; + + if (!json_object_object_get_ex(result, "success", &success)) { + return false; + } + + return json_object_get_boolean(success); +} + // Iterate results array and return false if any of them failed static bool success(json_object *r, bool fallback) { if (!json_object_is_type(r, json_type_array)) { return fallback; } + size_t results_len = json_object_array_length(r); if (!results_len) { return fallback; } + for (size_t i = 0; i < results_len; ++i) { json_object *result = json_object_array_get_idx(r, i); - json_object *success; - if (!json_object_object_get_ex(result, "success", &success)) { - return false; - } - if (!json_object_get_boolean(success)) { + + if (!success_object(result)) { return false; } } + return true; } static void pretty_print_cmd(json_object *r) { - if (!success(r, true)) { + if (!success_object(r)) { json_object *error; if (!json_object_object_get_ex(r, "error", &error)) { printf("An unknkown error occurred"); @@ -402,6 +412,7 @@ int main(int argc, char **argv) { } else { sway_abort("Unknown message type %s", cmdtype); } + free(cmdtype); char *command = NULL; |