diff options
Diffstat (limited to 'Src/utils.c')
-rw-r--r-- | Src/utils.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Src/utils.c b/Src/utils.c index e66d5bbf9..9716e162c 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -5388,11 +5388,7 @@ lchdir(char const *path, struct dirsav *d, int hard) if (*path == '/') { #endif level = -1; -#ifdef HAVE_FCHDIR - if (d->dirfd < 0 && (d->dirfd = open(".", O_RDONLY | O_NOCTTY)) < 0 && - zgetdir(d) && *d->dirname != '/') - d->dirfd = open("..", O_RDONLY | O_NOCTTY); -#else +#ifndef HAVE_FCHDIR if (!d->dirname) zgetdir(d); #endif @@ -5404,6 +5400,11 @@ lchdir(char const *path, struct dirsav *d, int hard) d->ino = st1.st_ino; } } +#ifdef HAVE_FCHDIR + if (d->dirfd < 0 && (d->dirfd = open(".", O_RDONLY | O_NOCTTY)) < 0 && + zgetdir(d) && *d->dirname != '/') + d->dirfd = open("..", O_RDONLY | O_NOCTTY); +#endif #ifdef HAVE_LSTAT if (!hard) |