diff options
author | Christopher Faylor <me@cgf.cx> | 2001-12-03 19:47:18 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-12-03 19:47:18 +0300 |
commit | 2a50e3df6f78914a051398e2a3b46882cfe0df27 (patch) | |
tree | ee3559bb9e5fbb0cd194ad521b1898e03c8a8895 /winsup/cygwin/path.cc | |
parent | 89ba9b974a8e1e60ccce106d329f1752cfb6becb (diff) |
* path.cc (mount_info::conv_to_win32_path): Avoid returning error if cygdrive
== '/'.
(mount_info::cygdrive_win32_path): Return 0 if invalid cygdrive path.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 17 |
1 files changed, 11 insertions, 6 deletions
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. |