]> sourceware.org Git - newlib-cygwin.git/commitdiff
* path.cc (cygwin_conv_path): Add band-aid including comment to avoid
authorCorinna Vinschen <corinna@vinschen.de>
Mon, 21 Dec 2009 16:44:37 +0000 (16:44 +0000)
committerCorinna Vinschen <corinna@vinschen.de>
Mon, 21 Dec 2009 16:44:37 +0000 (16:44 +0000)
conversion from POSIX "." to Win32 ".\\".

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index 77bc8618fe431c00599162ed3168254f2f9a6689..385115af43f0a162975c51eecde3177328ac724f 100644 (file)
@@ -1,3 +1,8 @@
+2009-12-21  Corinna Vinschen  <corinna@vinschen.de>
+
+       * path.cc (cygwin_conv_path): Add band-aid including comment to avoid
+       conversion from POSIX "." to Win32 ".\\".
+
 2009-12-21  Corinna Vinschen  <corinna@vinschen.de>
 
        * exec.cc (execvp): Call find_exec with FE_NNF flag to enforce
index 6238f2bce84fe09bcc4fd99f3e1d08765114d411..bd3463d8814c89648aac21d207d3c15bee5438fc 100644 (file)
@@ -2709,6 +2709,16 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to,
              *(buf += 2) = '\\';
          }
        lsiz = strlen (buf) + 1;
+       /* TODO: Incoming "." is a special case which leads to a trailing
+          backslash ".\\" in the Win32 path.  That's a result of the
+          conversion in normalize_posix_path.  This should not occur
+          so the below code is just a band-aid. */
+       if (!strcmp ((const char *) from, ".") && relative
+           && !strcmp (buf, ".\\"))
+         {
+           --lsiz;
+           buf[lsiz - 1] = '\0';
+         }
       }
       break;
     case CCP_POSIX_TO_WIN_W:
@@ -2727,7 +2737,16 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to,
          if (p.error)
            return_with_errno (p.error);
        }
-      lsiz = (p.get_wide_win32_path_len () + 1) * sizeof (WCHAR);
+      lsiz = p.get_wide_win32_path_len () + 1;
+      /* TODO: Same ".\\" band-aid as in CCP_POSIX_TO_WIN_A case. */
+      if (!strcmp ((const char *) from, ".") && relative
+         && !wcscmp (p.get_nt_native_path ()->Buffer, L".\\"))
+       {
+         --lsiz;
+         p.get_nt_native_path ()->Length -= sizeof (WCHAR);
+         p.get_nt_native_path ()->Buffer[lsiz - 1] = L'\0';
+       }
+      lsiz *= sizeof (WCHAR);
       break;
     case CCP_WIN_A_TO_POSIX:
       buf = tp.c_get ();
This page took 0.037827 seconds and 5 git commands to generate.