OSDN Git Service

* path.cc (symlink_info::check): Don't try to handle remote reparse
authorcorinna <corinna>
Wed, 26 May 2010 14:24:47 +0000 (14:24 +0000)
committercorinna <corinna>
Wed, 26 May 2010 14:24:47 +0000 (14:24 +0000)
points as symlinks.  Explain why.

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

index f1c0245..14f8e96 100644 (file)
@@ -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.
 
index 7270448..0cce1c9 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)