* path.cc (chdir): Allow 'cd /cygdrive'.
This commit is contained in:
parent
c7cf3563f0
commit
4e5289d848
@ -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. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user