This is the mail archive of the cygwin-cvs@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[newlib-cygwin] realpath: Handle Win32 and NT long path prefixes


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

commit 5c759ab2f45f966b5458d49a1a0e23c15d5c1eca
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Tue May 31 16:33:21 2016 +0200

    realpath: Handle Win32 and NT long path prefixes
    
    So far drive letter paths have been handled special since path_conv
    leaves the incoming path untouched except for converting backslashes
    to forward slashes.  However, if the incoming path starts with a
    long path prefix, the same problem occurs.  Therefore handle all
    paths starting with a backslahs the same way.
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/path.cc | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 250871d..18d5c1d 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -3560,10 +3560,12 @@ realpath (const char *__restrict path, char *__restrict resolved)
      potentially invalid resolved. */
   __try
     {
-      /* Win32 drive letter paths have to be converted to a POSIX path first,
-	 because path_conv leaves the incoming path untouched except for
-	 converting backslashes to forward slashes. */
-      if (isdrive (path))
+      /* Win32 drive letter paths and, generally, any path starting with a
+	 backslash, have to be converted to a POSIX path first, because
+	 path_conv leaves the incoming path untouched except for converting
+	 backslashes to forward slashes.  This also covers '\\?\ and '\??\'
+	 path prefixes. */
+      if (isdrive (path) || path[0] == '\\')
 	{
 	  tpath = tp.c_get ();
 	  mount_table->conv_to_posix_path (path, tpath, 0);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]