* path.cc (cygwin_conv_path): Add band-aid including comment to avoid

conversion from POSIX "." to Win32 ".\\".
This commit is contained in:
Corinna Vinschen 2009-12-21 16:44:37 +00:00
parent 6d63272b53
commit 59cb363a5f
2 changed files with 25 additions and 1 deletions

View 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

View 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 ();