Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-08-23 07:58:09 +0400
committerChristopher Faylor <me@cgf.cx>2005-08-23 07:58:09 +0400
commit5f5c6f7fa97ab11856b0bb1f71bf7ec954e04c71 (patch)
tree49fa3a87cf68d14dd87311c14487680e135f8a72
parent4797a77c2816ca920c2583912d620ffcb1dbd2ac (diff)
* 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.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/dir.cc4
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc7
3 files changed, 14 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f5c159f42..3bae109dd 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -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.
diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc
index ca9ff5979..e2247e254 100644
--- a/winsup/cygwin/dir.cc
+++ b/winsup/cygwin/dir.cc
@@ -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))
{
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index f26c65dd8..f0d58de73 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -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;
}
}