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:
authorCorinna Vinschen <corinna@vinschen.de>2009-10-20 14:12:05 +0400
committerCorinna Vinschen <corinna@vinschen.de>2009-10-20 14:12:05 +0400
commitcbea3f7d93e19af536ed8ba8225fb02454dac8ca (patch)
tree0237bf46aad6f4118c54a27fa9c86f996fc8b101
parent8d648dc5559eb0b9a35c8e064c674cfc720f88cb (diff)
* fhandler_disk_file.cc (fhander_disk_file::readdir): Handle a status
code STATUS_NOT_SUPPORTED. Add matching comment.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc9
2 files changed, 11 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index d28435f33..83fea341b 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2009-10-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhander_disk_file::readdir): Handle a status
+ code STATUS_NOT_SUPPORTED. Add matching comment.
+
2009-10-19 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (internal_setlocale): Only convert $PATH if there is a
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index cc1219322..d65938ce2 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -1870,10 +1870,13 @@ fhandler_disk_file::readdir (DIR *dir, dirent *de)
FALSE, NULL, dir->__d_position == 0);
/* FileIdBothDirectoryInformation isn't supported for remote drives
on NT4 and 2K systems, and it's also not supported on 2K at all,
- when accessing network drives on any remote OS. We just fall
- back to using a standard directory query in this case and note
- this case using the dirent_get_d_ino flag. */
+ when accessing network drives on any remote OS. There are also
+ hacked versions of Samba 3.0.x out there (Debian-based it seems),
+ which return STATUS_NOT_SUPPORTED rather than handling this info
+ class. We just fall back to using a standard directory query in
+ this case and note this case using the dirent_get_d_ino flag. */
if (status == STATUS_INVALID_LEVEL
+ || status == STATUS_NOT_SUPPORTED
|| status == STATUS_INVALID_PARAMETER
|| status == STATUS_INVALID_INFO_CLASS)
dir->__flags &= ~dirent_get_d_ino;