From: Christopher Faylor Date: Sat, 24 Nov 2001 03:35:58 +0000 (+0000) Subject: * path.cc (chdir): Allow 'cd /cygdrive'. X-Git-Tag: cygnus_cvs_20020108_pre~137 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=4e5289d84836889b172e4a31c76afb618f168b31;p=newlib-cygwin.git * path.cc (chdir): Allow 'cd /cygdrive'. --- diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 9084ad9e6..3159fa2cb 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2001-11-23 Christopher Faylor + + * path.cc (chdir): Allow 'cd /cygdrive'. + 2001-11-23 Christopher Faylor * dtable.cc (dtable::vfork_parent_restore): Add debugging statement. diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 6efdf7d9e..e818ed9fd 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -3223,7 +3223,7 @@ chdir (const char *in_dir) return -1; } - char *native_dir = path.get_win32 (); + const char *native_dir = path.get_win32 (); /* Check to see if path translates to something like C:. If it does, append a \ to the native directory specification to @@ -3231,10 +3231,17 @@ chdir (const char *in_dir) the last directory visited on the given drive. */ if (isdrive (native_dir) && !native_dir[2]) { - native_dir[2] = '\\'; - native_dir[3] = '\0'; + path.get_win32 ()[2] = '\\'; + path.get_win32 ()[3] = '\0'; + } + int res; + if (path.get_devn () != FH_CYGDRIVE) + res = SetCurrentDirectory (native_dir) ? 0 : -1; + else + { + native_dir = "c:\\"; + res = 0; } - int res = SetCurrentDirectoryA (native_dir) ? 0 : -1; /* If res < 0, we didn't change to a new directory. Otherwise, set the current windows and posix directory cache from input. @@ -3250,9 +3257,9 @@ chdir (const char *in_dir) __seterrno (); else if (!path.has_symlinks () && strpbrk (dir, ":\\") == NULL && pcheck_case == PCHECK_RELAXED) - cygheap->cwd.set (path, dir); + cygheap->cwd.set (native_dir, dir); else - cygheap->cwd.set (path, NULL); + cygheap->cwd.set (native_dir, NULL); /* Note that we're accessing cwd.posix without a lock here. I didn't think it was worth locking just for strace. */