From: Lennart Poettering Date: Tue, 6 Apr 2010 19:53:39 +0000 (+0200) Subject: execute: use fd_nonblock()//fd_cloexec() where applicable X-Git-Tag: v1~650 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=e2c76839a3f6444072ae452605204c7113ffdc37 execute: use fd_nonblock()//fd_cloexec() where applicable --- diff --git a/execute.c b/execute.c index dd36038c4..02f53dc48 100644 --- a/execute.c +++ b/execute.c @@ -137,6 +137,7 @@ static int shift_fds(int fds[], unsigned n_fds) { static int flags_fds(int fds[], unsigned n_fds, bool nonblock) { unsigned i; + int r; if (n_fds <= 0) return 0; @@ -146,27 +147,16 @@ static int flags_fds(int fds[], unsigned n_fds, bool nonblock) { /* Drops/Sets O_NONBLOCK and FD_CLOEXEC from the file flags */ for (i = 0; i < n_fds; i++) { - int flags; - - if ((flags = fcntl(fds[i], F_GETFL, 0)) < 0) - return -errno; - - if (nonblock) - flags |= O_NONBLOCK; - else - flags &= ~O_NONBLOCK; - if (fcntl(fds[i], F_SETFL, flags) < 0) - return -errno; + if ((r = fd_nonblock(fds[i], nonblock)) < 0) + return r; /* We unconditionally drop FD_CLOEXEC from the fds, * since after all we want to pass these fds to our * children */ - if ((flags = fcntl(fds[i], F_GETFD, 0)) < 0) - return -errno; - if (fcntl(fds[i], F_SETFD, flags &~FD_CLOEXEC) < 0) - return -errno; + if ((r = fd_cloexec(fds[i], false)) < 0) + return r; } return 0;