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
a NULL return when executable isn't found in $PATH. Convert NULL
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:
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 ();