From 62997eda8c97eb0d830ca9e4d87594a0e4c4d99d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 29 Dec 2018 18:01:21 +0100 Subject: [PATCH] bar: run(): only return 0 if all modules exited with 0 --- bar.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/bar.c b/bar.c index 3697f3a..a1a067c 100644 --- a/bar.c +++ b/bar.c @@ -640,13 +640,26 @@ run(struct bar_run_context *run_ctx) } /* Wait for modules to terminate */ + int ret = 0; int mod_ret; - for (size_t i = 0; i < bar->left.count; i++) + for (size_t i = 0; i < bar->left.count; i++) { thrd_join(thrd_left[i], &mod_ret); - for (size_t i = 0; i < bar->center.count; i++) + if (mod_ret != 0) + LOG_ERR("module: LEFT #%zu: non-zero exit value: %d", i, mod_ret); + ret = ret == 0 && mod_ret != 0 ? mod_ret : ret; + } + for (size_t i = 0; i < bar->center.count; i++) { thrd_join(thrd_center[i], &mod_ret); - for (size_t i = 0; i < bar->right.count; i++) + if (mod_ret != 0) + LOG_ERR("module: CENTER #%zu: non-zero exit value: %d", i, mod_ret); + ret = ret == 0 && mod_ret != 0 ? mod_ret : ret; + } + for (size_t i = 0; i < bar->right.count; i++) { thrd_join(thrd_right[i], &mod_ret); + if (mod_ret != 0) + LOG_ERR("module: RIGHT #%zu: non-zero exit value: %d", i, mod_ret); + ret = ret == 0 && mod_ret != 0 ? mod_ret : ret; + } LOG_DBG("modules joined"); @@ -671,7 +684,7 @@ run(struct bar_run_context *run_ctx) xcb_disconnect(bar->conn); LOG_DBG("bar exiting"); - return 0; + return ret; } static void