chiark / gitweb /
fd-util: use close_nointr() return value instead of errno
authorLennart Poettering <lennart@poettering.net>
Fri, 22 Dec 2017 12:04:24 +0000 (13:04 +0100)
committerSven Eden <yamakuzure@gmx.net>
Wed, 30 May 2018 05:49:43 +0000 (07:49 +0200)
Our own calls return errors in their return values, hence use that
rather than errno when checking errors.

src/basic/fd-util.c

index c694f434606923c78829e6946ec65caa6eb266c4..3e882287ce116f7d2b5e9afa72e8eb7011a70f97 100644 (file)
@@ -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;