]> sourceware.org Git - newlib-cygwin.git/commitdiff
* path.cc (symlink_info::check): Don't try to handle remote reparse
authorCorinna Vinschen <corinna@vinschen.de>
Wed, 26 May 2010 14:24:47 +0000 (14:24 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Wed, 26 May 2010 14:24:47 +0000 (14:24 +0000)
points as symlinks.  Explain why.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index f1c0245b8170d305413118ba7b2535b4ab4066a1..14f8e96627ca27ece11f2d4a7a2ef06b0605474f 100644 (file)
@@ -1,3 +1,8 @@
+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
index 72704480de57c3d8d3e36b37aab7e2ffc3ca09a8..0cce1c946728ae7c7afa045e4b98f7df1c0b50cb 100644 (file)
@@ -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)
This page took 0.035517 seconds and 5 git commands to generate.