diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-02-20 11:17:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-20 11:17:58 +0100 |
commit | 0ba75bde5f008dd5eb818549c76e1fa4499b7f36 (patch) | |
tree | 5a72210bb447405c809d4b4ab8ff5bbee79a1e03 /src | |
parent | c207a572275f7645673727b5406b3449d35da99f (diff) | |
parent | ced30d69fa878b7132d818fa7cd6da163108c254 (diff) | |
download | systemd-0ba75bde5f008dd5eb818549c76e1fa4499b7f36.tar.gz |
Merge pull request #26479 from yuwata/exec-util-misc
exec-util: several cleanups
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/process-util.c | 2 | ||||
-rw-r--r-- | src/shared/exec-util.c | 15 |
2 files changed, 8 insertions, 9 deletions
diff --git a/src/basic/process-util.c b/src/basic/process-util.c index be82d0ffe7..4df369dd2a 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -1185,7 +1185,7 @@ int safe_fork_full( else pid = fork(); if (pid < 0) - return log_full_errno(prio, errno, "Failed to fork: %m"); + return log_full_errno(prio, errno, "Failed to fork off '%s': %m", strna(name)); if (pid > 0) { /* We are in the parent process */ diff --git a/src/shared/exec-util.c b/src/shared/exec-util.c index 7ed2cce76b..2e8f5b8562 100644 --- a/src/shared/exec-util.c +++ b/src/shared/exec-util.c @@ -151,18 +151,16 @@ static int do_execute( t = NULL; } else { r = wait_for_terminate_and_check(t, pid, WAIT_LOG); - if (FLAGS_SET(flags, EXEC_DIR_IGNORE_ERRORS)) { - if (r < 0) - continue; - } else if (r > 0) + if (r < 0) + return r; + if (!FLAGS_SET(flags, EXEC_DIR_IGNORE_ERRORS) && r > 0) return r; if (callbacks) { if (lseek(fd, 0, SEEK_SET) < 0) return log_error_errno(errno, "Failed to seek on serialization fd: %m"); - r = callbacks[STDOUT_GENERATE](fd, callback_args[STDOUT_GENERATE]); - fd = -EBADF; + r = callbacks[STDOUT_GENERATE](TAKE_FD(fd), callback_args[STDOUT_GENERATE]); if (r < 0) return log_error_errno(r, "Failed to process output from %s: %m", *path); } @@ -186,6 +184,8 @@ static int do_execute( assert(t); r = wait_for_terminate_and_check(t, pid, WAIT_LOG); + if (r < 0) + return r; if (!FLAGS_SET(flags, EXEC_DIR_IGNORE_ERRORS) && r > 0) return r; } @@ -249,8 +249,7 @@ int execute_directories( if (lseek(fd, 0, SEEK_SET) < 0) return log_error_errno(errno, "Failed to rewind serialization fd: %m"); - r = callbacks[STDOUT_CONSUME](fd, callback_args[STDOUT_CONSUME]); - fd = -EBADF; + r = callbacks[STDOUT_CONSUME](TAKE_FD(fd), callback_args[STDOUT_CONSUME]); if (r < 0) return log_error_errno(r, "Failed to parse returned data: %m"); return 0; |