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
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-05-26 18:24:47 +0400
committerCorinna Vinschen <corinna@vinschen.de>2010-05-26 18:24:47 +0400
commit1ee8d76ca047d18c6462d70850fc64de35c631f5 (patch)
treedea90d46ef230d9c78cc6a8aeac0964c8a734ba9 /winsup
parent16f52c1461f6ac698eea4a90f40406ecb83bf54c (diff)
* path.cc (symlink_info::check): Don't try to handle remote reparse
points as symlinks. Explain why.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/path.cc10
2 files changed, 13 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f1c0245b8..14f8e9662 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2010-05-26 Corinna Vinschen <corinna@vinschen.de>
+ * path.cc (symlink_info::check): Don't try to handle remote reparse
+ points as symlinks. Explain why.
+
+2010-05-26 Corinna Vinschen <corinna@vinschen.de>
+
* include/inttypes.h: Change PTR definitions to int to align with the
stdint.h type definitions of intptr_t/uintptr_t.
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 72704480d..0cce1c946 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2503,8 +2503,14 @@ restart:
performed before checking the SYSTEM attribute for sysfile
symlinks, since reparse points can have this flag set, too.
For instance, Vista starts to create a couple of reparse points
- with SYSTEM and HIDDEN flags set. */
- else if (fileattr & FILE_ATTRIBUTE_REPARSE_POINT)
+ with SYSTEM and HIDDEN flags set.
+ Also don't check reparse points on remote filesystems.
+ A reparse point pointing to another file on the remote system will be
+ mistreated as pointing to a local file on the local system. This
+ breaks the way reparse points are transparently handled on remote
+ systems. */
+ else if ((fileattr & FILE_ATTRIBUTE_REPARSE_POINT)
+ && !fs.is_remote_drive())
{
res = check_reparse_point (h);
if (res == -1)