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-12-24 15:53:43 +0300
committerCorinna Vinschen <corinna@vinschen.de>2009-12-24 15:53:43 +0300
commit14c622c6e3b3e0c98ba739b731099879115f853a (patch)
tree96fee1e38241429755124e98dbabfe15931434c3
parentdaee16e053f4f9c476b4e3e22f39c31e4bb20b0f (diff)
* path.cc (symlink_info::check): Set fileattr to
FILE_ATTRIBUTE_DIRECTORY in a certain error condition. Explain why.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/path.cc7
2 files changed, 11 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 26291f0d8..8a2111bed 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (symlink_info::check): Set fileattr to
+ FILE_ATTRIBUTE_DIRECTORY in a certain error condition. Explain why.
+
2009-12-22 Christopher Faylor <me+cygwin@cgf.cx>
* select.cc (fhandler_fifo::select_read): Fill in device specific
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index bd3463d88..559c87339 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2327,7 +2327,12 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt,
if (!NT_SUCCESS (status))
{
debug_printf ("%p = NtOpenFile(%S)", status, &dirname);
- fileattr = 0;
+ /* There's a special case if the file is itself the root
+ of a drive which is not accessible by the current user.
+ This case is only recognized by the length of the
+ basename part. If it's 0, the incoming file is the
+ root of a drive. So we at least know it's a directory. */
+ fileattr = basename.Length ? 0 : FILE_ATTRIBUTE_DIRECTORY;
}
else
{