]> sourceware.org Git - newlib-cygwin.git/commitdiff
* dir.cc (readdir_worker): Make static. Only add '.' and '..' when readdir
authorChristopher Faylor <me@cgf.cx>
Tue, 23 Aug 2005 03:58:09 +0000 (03:58 +0000)
committerChristopher Faylor <me@cgf.cx>
Tue, 23 Aug 2005 03:58:09 +0000 (03:58 +0000)
fails due to ENMFILE.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Only close handle on
error != ENMFILE.

winsup/cygwin/ChangeLog
winsup/cygwin/dir.cc
winsup/cygwin/fhandler_disk_file.cc

index f5c159f42d3e50a2dff4db3dc563d725648cfea0..3bae109dd808b1dd32b56323e9a9106e36a41564 100644 (file)
@@ -1,3 +1,10 @@
+2005-08-22  Christopher Faylor  <cgf@timesys.com>
+
+       * dir.cc (readdir_worker): Make static.  Only add '.' and '..' when
+       readdir fails due to ENMFILE.
+       * fhandler_disk_file.cc (fhandler_disk_file::readdir): Only close
+       handle on error != ENMFILE.
+
 2005-08-22  Corinna Vinschen  <corinna@vinschen.de>
 
        * mtinfo.h (mtinfo_drive::error): Fix argument bug in debug_printf call.
index ca9ff5979b002dece40a31f2b279878f581a28e5..e2247e254c66a20af4a8ed64cf2d0696860cc648 100644 (file)
@@ -65,7 +65,7 @@ opendir (const char *name)
   return res;
 }
 
-int
+static int
 readdir_worker (DIR *dir, dirent *de)
 {
   myfault efault;
@@ -80,7 +80,7 @@ readdir_worker (DIR *dir, dirent *de)
 
   int res = ((fhandler_base *) dir->__fh)->readdir (dir, de);
 
-  if (res)
+  if (res == ENMFILE)
     {
       if (!(dir->__flags & dirent_saw_dot))
        {
index f26c65dd8edeb12b50ad26027e7bb80e165e107a..f0d58de730c87496e11f0e520c04e4284334789d 100644 (file)
@@ -1399,8 +1399,11 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
       else
        {
          res = geterrno_from_win_error ();
-         FindClose (dir->__handle);
-         dir->__handle = INVALID_HANDLE_VALUE;
+         if (res != ENMFILE)
+           {
+             FindClose (dir->__handle);
+             dir->__handle = INVALID_HANDLE_VALUE;
+           }
          goto out;
        }
     }
This page took 0.039342 seconds and 5 git commands to generate.