diff options
author | Lennart Poettering <lennart@poettering.net> | 2017-12-22 13:04:24 +0100 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2018-05-30 07:49:43 +0200 |
commit | 6b31c632bc5ce9b89031db22252443795ed576b7 (patch) | |
tree | 83c4240749aa2c245ad3da028c3256c27bebc20e /src | |
parent | 8c7b0a29c7e93441438c6c7f0da49aa215c3295b (diff) |
fd-util: use close_nointr() return value instead of errno
Our own calls return errors in their return values, hence use that
rather than errno when checking errors.
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/fd-util.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index c694f4346..3e882287c 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -229,20 +229,21 @@ int close_all_fds(const int except[], unsigned n_except) { assert_se(getrlimit(RLIMIT_NOFILE, &rl) >= 0); for (fd = 3; fd < (int) rl.rlim_max; fd ++) { + int q; if (fd_in_set(fd, except, n_except)) continue; - if (close_nointr(fd) < 0) - if (errno != EBADF && r == 0) - r = -errno; + q = close_nointr(fd); + if (q < 0 && q != -EBADF && r >= 0) + r = q; } return r; } FOREACH_DIRENT(de, d, return -errno) { - int fd = -1; + int fd = -1, q; if (safe_atoi(de->d_name, &fd) < 0) /* Let's better ignore this, just in case */ @@ -257,11 +258,9 @@ int close_all_fds(const int except[], unsigned n_except) { if (fd_in_set(fd, except, n_except)) continue; - if (close_nointr(fd) < 0) { - /* Valgrind has its own FD and doesn't want to have it closed */ - if (errno != EBADF && r == 0) - r = -errno; - } + q = close_nointr(fd); + if (q < 0 && q != -EBADF && r >= 0) /* Valgrind has its own FD and doesn't want to have it closed */ + r = q; } return r; |