* path.cc (chdir): Allow 'cd /cygdrive'.
This commit is contained in:
		| @@ -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> | 2001-11-23  Christopher Faylor  <cgf@redhat.com> | ||||||
|  |  | ||||||
| 	* dtable.cc (dtable::vfork_parent_restore): Add debugging statement. | 	* dtable.cc (dtable::vfork_parent_restore): Add debugging statement. | ||||||
|   | |||||||
| @@ -3223,7 +3223,7 @@ chdir (const char *in_dir) | |||||||
|       return -1; |       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:. |   /* Check to see if path translates to something like C:. | ||||||
|      If it does, append a \ to the native directory specification to |      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. */ |      the last directory visited on the given drive. */ | ||||||
|   if (isdrive (native_dir) && !native_dir[2]) |   if (isdrive (native_dir) && !native_dir[2]) | ||||||
|     { |     { | ||||||
|       native_dir[2] = '\\'; |       path.get_win32 ()[2] = '\\'; | ||||||
|       native_dir[3] = '\0'; |       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. |   /* If res < 0, we didn't change to a new directory. | ||||||
|      Otherwise, set the current windows and posix directory cache from input. |      Otherwise, set the current windows and posix directory cache from input. | ||||||
| @@ -3250,9 +3257,9 @@ chdir (const char *in_dir) | |||||||
|     __seterrno (); |     __seterrno (); | ||||||
|   else if (!path.has_symlinks () && strpbrk (dir, ":\\") == NULL |   else if (!path.has_symlinks () && strpbrk (dir, ":\\") == NULL | ||||||
| 	   && pcheck_case == PCHECK_RELAXED) | 	   && pcheck_case == PCHECK_RELAXED) | ||||||
|     cygheap->cwd.set (path, dir); |     cygheap->cwd.set (native_dir, dir); | ||||||
|   else |   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 |   /* Note that we're accessing cwd.posix without a lock here.  I didn't think | ||||||
|      it was worth locking just for strace. */ |      it was worth locking just for strace. */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user