X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Fcloseall.c;h=38fb162c3a3ccb89d7336cc264df18f094311bbb;hp=cc7fb3bd86164cf775eb71b1951bf3b064f1ef51;hb=097128d72d1ab4be299bf5fdc0b8e83667fc159b;hpb=148503a575534a4050d709045a6c0dcddd565445 diff --git a/support/nfs/closeall.c b/support/nfs/closeall.c index cc7fb3b..38fb162 100644 --- a/support/nfs/closeall.c +++ b/support/nfs/closeall.c @@ -7,19 +7,24 @@ #include #include #include +#include void closeall(int min) { + char *endp; + long n; DIR *dir = opendir("/proc/self/fd"); + if (dir != NULL) { int dfd = dirfd(dir); struct dirent *d; while ((d = readdir(dir)) != NULL) { - char *endp; - long n = strtol(d->d_name, &endp, 10); - if (*endp != '\0' && n >= min && n != dfd) + errno = 0; + n = strtol(d->d_name, &endp, 10); + if (!errno && *endp == '\0' && endp != d->d_name && + n >= min && n != dfd) (void) close(n); } closedir(dir);