https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=c8949d04001e3dbc03651475b6cd1c5623400835

commit c8949d04001e3dbc03651475b6cd1c5623400835
Author: Jeremy Drake <[email protected]>
Date:   Wed May 19 14:40:23 2021 +0200

    Cygwin: Handle virtual drives as non-symlinks
    
    This avoids MAX_PATH-related problems in native tools in case the
    virtual drive points to a deep directory
    
    Signed-off-by: Corinna Vinschen <[email protected]>

Diff:
---
 winsup/cygwin/path.cc | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index dd7048486..637c32348 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -3495,14 +3495,9 @@ restart:
 
                     subst X: C:\foo\bar
 
-                  Treat it like a symlink.  This is required to tell an
-                  lstat caller that the "drive" is actually pointing
-                  somewhere else, thus, it's a symlink in POSIX speak. */
+                  Treat it as a normal file. */
                if (upath.Length == 14) /* \??\X:\ */
-                 {
-                   fileattr &= ~FILE_ATTRIBUTE_DIRECTORY;
-                   path_flags |= PATH_SYMLINK;
-                 }
+                 goto file_not_symlink;
                /* For final paths differing in inner path components return
                   length as negative value.  This informs path_conv::check
                   to skip realpath handling on the last path component. */

Reply via email to