From 0b5f380ddc094b9dc3741dc2beaf7b775e4946d6 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sat, 17 Nov 2007 18:13:55 +0100 Subject: [PATCH 1/1] fade.c: Fix client_cmd() We have to wait for children to terminate because otherwise the client commands may be executed in random order. Since no caller checked the return value of client_cmd(), make it abort on errors and change the return value to void. Also, each caller only passed one string, so make it take only a char * pointer. --- fade.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fade.c b/fade.c index f269f029..c86b9385 100644 --- a/fade.c +++ b/fade.c @@ -149,7 +149,7 @@ out: close(mixer_fd); } -static int client_cmd(const char *cmd,...) +static void client_cmd(const char *cmd) { int ret, fds[3] = {0, 0, 0}; pid_t pid; @@ -158,7 +158,11 @@ static int client_cmd(const char *cmd,...) PARA_INFO_LOG("%s\n", cmdline); ret = para_exec_cmdline_pid(&pid, cmdline, fds); free(cmdline); - return ret; + if (ret < 0) + exit(EXIT_FAILURE); + do + ret = wait(NULL); + while (ret != -1 && errno != ECHILD); } static void change_afs_mode_and_play(char *afs_mode) -- 2.39.2