From 2a50e3df6f78914a051398e2a3b46882cfe0df27 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Mon, 3 Dec 2001 16:47:18 +0000 Subject: [PATCH] * path.cc (mount_info::conv_to_win32_path): Avoid returning error if cygdrive == '/'. (mount_info::cygdrive_win32_path): Return 0 if invalid cygdrive path. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/include/cygwin/version.h | 2 +- winsup/cygwin/path.cc | 17 +++++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index ea2483b8b..40aaba692 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2001-12-03 Christopher Faylor + + * path.cc (mount_info::conv_to_win32_path): Avoid returning error if + cygdrive == '/'. + (mount_info::cygdrive_win32_path): Return 0 if invalid cygdrive path. + 2001-11-30 Christopher Faylor * debug.cc (makethread): Eliminate unneeded function call. diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 60c51687a..180cd7254 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -44,7 +44,7 @@ details. */ /* The current cygwin version is 1.3.6 */ #define CYGWIN_VERSION_DLL_MAJOR 1003 -#define CYGWIN_VERSION_DLL_MINOR 6 +#define CYGWIN_VERSION_DLL_MINOR 7 /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are incompatible. */ diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index af30927c0..4c295f247 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1389,12 +1389,15 @@ mount_info::conv_to_win32_path (const char *src_path, char *dst, dst[0] = '\0'; if (mount_table->cygdrive_len > 1) devn = FH_CYGDRIVE; + goto out; } - else if (!cygdrive_win32_path (pathbuf, dst, unit)) + else if (cygdrive_win32_path (pathbuf, dst, unit)) + { + *flags = cygdrive_flags; + goto out; + } + else if (mount_table->cygdrive_len > 1) return ENOENT; - else - *flags = cygdrive_flags; - goto out; } int chrooted_path_len; @@ -1518,8 +1521,9 @@ mount_info::cygdrive_win32_path (const char *src, char *dst, int& unit) const char *p = src + cygdrive_len; if (!isalpha (*p) || (!isdirsep (p[1]) && p[1])) { - res = unit = -1; + unit = -1; dst[0] = '\0'; + res = 0; } else { @@ -1528,9 +1532,10 @@ mount_info::cygdrive_win32_path (const char *src, char *dst, int& unit) strcpy (dst + 2, p + 1); backslashify (dst, dst, !dst[2]); unit = dst[0]; + res = 1; } debug_printf ("src '%s', dst '%s'", src, dst); - return 1; + return res; } /* conv_to_posix_path: Ensure src_path is a POSIX path.