]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
(is_empty_dir): Detect and diagnose readdir failures.
authorJim Meyering <jim@meyering.net>
Thu, 29 Aug 2002 10:42:12 +0000 (10:42 +0000)
committerJim Meyering <jim@meyering.net>
Thu, 29 Aug 2002 10:42:12 +0000 (10:42 +0000)
Always close directory handle.

src/remove.c

index 11df3fa546a7913ee22f8fb6c491e022f3de09f9..a75694c6b1459f82f0b7ba1170b97622ff6c37b1 100644 (file)
@@ -522,19 +522,30 @@ is_empty_dir (char const *dir)
 {
   DIR *dirp = opendir (dir);
   if (dirp == NULL)
-    return false;
+    {
+      closedir (dirp);
+      return false;
+    }
 
   while (1)
     {
-      struct dirent *dp = readdir (dirp);
+      struct dirent *dp;
       const char *f;
 
+      errno = 0;
+      dp = readdir (dirp);
       if (dp == NULL)
-       return true;
+       {
+         closedir (dirp);
+         return errno == 0 ? true : false;
+       }
 
       f = dp->d_name;
       if ( ! DOT_OR_DOTDOT (f))
-       return false;
+       {
+         closedir (dirp);
+         return false;
+       }
     }
 }