diff options
-rw-r--r-- | compat/closefrom.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/compat/closefrom.c b/compat/closefrom.c index 664c4bc..9d34a53 100644 --- a/compat/closefrom.c +++ b/compat/closefrom.c @@ -32,11 +32,18 @@ int closefrom(int fd) { - int max = getdtablesize(); - int i; - int r = 0; + long max; + int i, r; - for (i = fd; i < max; i++) - r += close(i); +#ifdef _SC_OPEN_MAX + max = sysconf(_SC_OPEN_MAX); +#else + max = getdtablesize(); +#endif + r = 0; + for (i = fd; i < max; i++) { + if (close(i) == -1) + r = -1; + } return r; } |