cygwin_conv_path: Always preserve trailing backslashes in conversion to POSIX paths

* include/sys/cygwin.h (CCP_CONVFLAGS_MASK): Define.
	* mount.h (__CCP_APP_SLASH): Define.
	* mount.cc (mount_info::conv_to_posix_path): Handle __CCP_APP_SLASH
	flag.
	* path.cc (cygwin_conv_path): Use CCP_CONVFLAGS_MASK to evaluate
	"how" flag values.  Always add __CCP_APP_SLASH flag when calling
	mount_info::conv_to_posix_path.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen
2016-02-09 15:00:30 +01:00
parent 9676aeef0d
commit 8b83da2d55
4 changed files with 12 additions and 5 deletions

View File

@ -3318,7 +3318,7 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to,
char *buf = NULL;
PWCHAR path = NULL;
int error = 0;
int how = what & ~CCP_CONVTYPE_MASK;
int how = what & CCP_CONVFLAGS_MASK;
what &= CCP_CONVTYPE_MASK;
int ret = -1;
@ -3444,7 +3444,7 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to,
case CCP_WIN_A_TO_POSIX:
buf = tp.c_get ();
error = mount_table->conv_to_posix_path ((const char *) from, buf,
how);
how | __CCP_APP_SLASH);
if (error)
{
set_errno (p.error);
@ -3455,7 +3455,7 @@ cygwin_conv_path (cygwin_conv_path_t what, const void *from, void *to,
case CCP_WIN_W_TO_POSIX:
buf = tp.c_get ();
error = mount_table->conv_to_posix_path ((const PWCHAR) from, buf,
how);
how | __CCP_APP_SLASH);
if (error)
{
set_errno (error);