From 34df1426653e79d170de399dfadc5b2709f85815 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Wed, 5 Nov 2014 20:01:53 +0100 Subject: [PATCH] Refactor file descriptor closure into a new closefrom_close() --- src/closefrom.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/closefrom.c b/src/closefrom.c index 423a004..03e84d8 100644 --- a/src/closefrom.c +++ b/src/closefrom.c @@ -60,6 +60,17 @@ # define closefrom closefrom_fallback #endif +static inline void +closefrom_close(int fd) +{ +#ifdef __APPLE__ + /* Avoid potential libdispatch crash when we close its fds. */ + (void)fcntl(fd, F_SETFD, FD_CLOEXEC); +#else + (void)close(fd); +#endif +} + /* * Close all file descriptors greater than or equal to lowfd. * This is the expensive (fallback) method. @@ -82,14 +93,8 @@ closefrom_fallback(int lowfd) if (maxfd < 0) maxfd = OPEN_MAX; - for (fd = lowfd; fd < maxfd; fd++) { -#ifdef __APPLE__ - /* Avoid potential libdispatch crash when we close its fds. */ - (void)fcntl((int)fd, F_SETFD, FD_CLOEXEC); -#else - (void)close((int)fd); -#endif - } + for (fd = lowfd; fd < maxfd; fd++) + closefrom_close(fd); } /* @@ -138,15 +143,8 @@ closefrom(int lowfd) int fd; fd = strtonum(dent->d_name, lowfd, INT_MAX, &errstr); - if (errstr == NULL && fd != dirfd(dirp)) { -# ifdef __APPLE__ - /* Avoid potential libdispatch crash when we - * close its fds. */ - (void)fcntl(fd, F_SETFD, FD_CLOEXEC); -# else - (void)close(fd); -# endif - } + if (errstr == NULL && fd != dirfd(dirp)) + closefrom_close(fd); } (void)closedir(dirp); } else -- 2.47.3