2008-06-11 Corinna Vinschen <corinna@vinschen.de>
+ * path.cc (get_nt_native_path): Drop considerations for DOS devices.
+ Keep relative paths relative.
+ (cygwin_conv_path): Don't try to skip native NT prefixes on relative
+ paths.
+
+2008-06-11 Corinna Vinschen <corinna@vinschen.de>
+
* include/cygwin/version.h (CYGWIN_VERSION_MOUNT_REGISTRY): Bump.
(CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME): Remove.
(CYGWIN_INFO_CYGDRIVE_FLAGS): Remove.
upath.Length = 0;
if (path[0] == '/') /* special path w/o NT path representation. */
str2uni_cat (upath, path);
- else if (path[0] != '\\') /* X:\... or NUL, etc. */
+ else if (path[0] != '\\') /* X:\... or relative path. */
{
- str2uni_cat (upath, "\\??\\");
+ if (path[1] == ':') /* X:\... */
+ str2uni_cat (upath, "\\??\\");
str2uni_cat (upath, path);
transform_chars (&upath, 7, managed);
}
PUNICODE_STRING up = p.get_nt_native_path ();
buf = tp.c_get ();
sys_wcstombs (buf, NT_MAX_PATH, up->Buffer, up->Length / sizeof (WCHAR));
- buf += 4; /* Skip \??\ */
- if (buf[1] != ':') /* native UNC path */
- *(buf += 2) = '\\';
+ /* Convert native path to standard DOS path. */
+ if (!strncmp (buf, "\\??\\", 4))
+ {
+ buf += 4;
+ if (buf[1] != ':') /* native UNC path */
+ *(buf += 2) = '\\';
+ }
lsiz = strlen (buf) + 1;
break;
case CCP_POSIX_TO_WIN_W: