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

commit d0e42141b80739213be1c3c397edcce191e5b56e
Author: Jeremy Drake <[email protected]>
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. */

Reply via email to