mirror of
https://github.com/zsh-users/zsh
synced 2024-09-20 08:22:05 +00:00
13389: normalize path in cd_do_chdir on Cygwin to get rid of DOS names
This commit is contained in:
parent
193846af84
commit
e28d948e92
|
@ -1,3 +1,8 @@
|
|||
2001-01-26 Andrej Borsenkow <Andrej.Borsenkow@mow.siemens.ru>
|
||||
|
||||
* 13389: Src/builtin.c: on Cygwin convert path to posix form in
|
||||
cd_do_chdir() to avoid dealing with driver letters
|
||||
|
||||
2001-01-25 Sven Wischnowsky <wischnow@zsh.org>
|
||||
|
||||
* 13388: Src/Zle/compmatch.c: fix for mergin two CLF_MID entries
|
||||
|
|
|
@ -836,14 +836,31 @@ cd_do_chdir(char *cnam, char *dest, int hard)
|
|||
{
|
||||
char **pp, *ret;
|
||||
int hasdot = 0, eno = ENOENT;
|
||||
/* nocdpath indicates that cdpath should not be used. This is the case iff
|
||||
dest is a relative path whose first segment is . or .., but if the path is
|
||||
absolute then cdpath won't be used anyway. */
|
||||
int nocdpath = dest[0] == '.' &&
|
||||
(dest[1] == '/' || !dest[1] || (dest[1] == '.' &&
|
||||
/*
|
||||
* nocdpath indicates that cdpath should not be used.
|
||||
* This is the case iff dest is a relative path
|
||||
* whose first segment is . or .., but if the path is
|
||||
* absolute then cdpath won't be used anyway.
|
||||
*/
|
||||
int nocdpath;
|
||||
#ifdef __CYGWIN__
|
||||
/*
|
||||
* Normalize path under Cygwin to avoid messing with
|
||||
* DOS style names with drives in them
|
||||
*/
|
||||
static char buf[PATH_MAX];
|
||||
void cygwin_conv_to_posix_path(const char *, char *);
|
||||
|
||||
cygwin_conv_to_posix_path(dest, buf);
|
||||
dest = buf;
|
||||
#endif
|
||||
nocdpath = dest[0] == '.' &&
|
||||
(dest[1] == '/' || !dest[1] || (dest[1] == '.' &&
|
||||
(dest[2] == '/' || !dest[2])));
|
||||
|
||||
/* if we have an absolute path, use it as-is only */
|
||||
/*
|
||||
* If we have an absolute path, use it as-is only
|
||||
*/
|
||||
if (*dest == '/') {
|
||||
if ((ret = cd_try_chdir(NULL, dest, hard)))
|
||||
return ret;
|
||||
|
|
Loading…
Reference in a new issue