From 28a809886d3df86ffb07c302ff717b621caf22a2 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 20 Mar 2009 22:52:56 +0000 Subject: 26763: fix problem on failed cd -s to relative path --- Src/utils.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'Src') 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) -- cgit 1.4.1