From 0557c83d40c02fef287ab968a05e5435788bb200 Mon Sep 17 00:00:00 2001 From: Jacques de Laval Date: Fri, 12 Feb 2021 16:33:18 +0100 Subject: [PATCH] Fix #127: communicate run-parts progress/status Printing the progress of run-parts script just like for `rc.local` seems reasonable. Also log a warning if any script exits abnormally. Signed-off-by: Jacques de Laval --- src/exec.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/exec.c b/src/exec.c index 8f4a38d8..64d98c4e 100644 --- a/src/exec.c +++ b/src/exec.c @@ -451,6 +451,8 @@ int run_parts(char *dir, char *cmd) }; char *name = e[i]->d_name; pid_t pid = 0; + int status; + int exit_status; snprintf(path, sizeof(path), "%s/%s", dir, name); if (stat(path, &st)) { @@ -475,13 +477,20 @@ int run_parts(char *dir, char *cmd) strlcat(path, cmd, sizeof(path)); } + print_desc("Calling ", path); pid = fork(); if (!pid) { sig_unblock(); return execvp(_PATH_BSHELL, argv); } - complete(path, pid); + status = complete(path, pid); + exit_status = WEXITSTATUS(status); + if (WIFEXITED(status) && exit_status) + _w("%s exited with status %d", path, exit_status); + else if (WIFSIGNALED(status)) + _w("%s terminated by signad %d", path, WTERMSIG(status)); + print_result(status); } while (num--)