]> sourceware.org Git - newlib-cygwin.git/commitdiff
* path.cc (chdir): Allow 'cd /cygdrive'.
authorChristopher Faylor <me@cgf.cx>
Sat, 24 Nov 2001 03:35:58 +0000 (03:35 +0000)
committerChristopher Faylor <me@cgf.cx>
Sat, 24 Nov 2001 03:35:58 +0000 (03:35 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index 9084ad9e64693a5889f5bed665386ccc038e46e2..3159fa2cbe9c3ff316b44ec40e971626e9c424f9 100644 (file)
@@ -1,3 +1,7 @@
+2001-11-23  Christopher Faylor  <cgf@redhat.com>
+
+       * path.cc (chdir): Allow 'cd /cygdrive'.
+
 2001-11-23  Christopher Faylor  <cgf@redhat.com>
 
        * dtable.cc (dtable::vfork_parent_restore): Add debugging statement.
index 6efdf7d9e153a1cd72113eb46c29c29f41d67427..e818ed9fdedae1d8dc6415cec9e447a899e95fe8 100644 (file)
@@ -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. */
This page took 0.037644 seconds and 5 git commands to generate.