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

Corinna Vinschen corinna@sourceware.org
Tue Jul 6 14:57:12 GMT 2021


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

commit d0e42141b80739213be1c3c397edcce191e5b56e
Author: Jeremy Drake <cygwin@jdrake.com>
Date:   Sat May 29 13:17:08 2021 -0700

    Revert "Cygwin: Handle virtual drives as non-symlinks"
    
    This reverts commit c8949d04001e3dbc03651475b6cd1c5623400835.

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

diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 6a07f0d06..e62f8fe2b 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -3505,9 +3505,14 @@ restart:
 
 		     subst X: C:\foo\bar
 
-		   Treat it as a normal file. */
+		   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. */
 		if (upath.Length == 14)	/* \??\X:\ */
-		  goto file_not_symlink;
+		  {
+		    fileattr &= ~FILE_ATTRIBUTE_DIRECTORY;
+		    path_flags |= PATH_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