[newlib-cygwin] Cygwin: Handle virtual drives as non-symlinks

Corinna Vinschen corinna@sourceware.org
Wed May 19 12:41:18 GMT 2021


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

commit c8949d04001e3dbc03651475b6cd1c5623400835
Author: Jeremy Drake <cygwin@jdrake.com>
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 <corinna@vinschen.de>

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. */


More information about the Cygwin-cvs mailing list