summaryrefslogtreecommitdiff
path: root/io/ftw.c
diff options
context:
space:
mode:
Diffstat (limited to 'io/ftw.c')
-rw-r--r--io/ftw.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/io/ftw.c b/io/ftw.c
index f93d00f332..eceb4040d0 100644
--- a/io/ftw.c
+++ b/io/ftw.c
@@ -358,7 +358,7 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,
}
else
if (__chdir ("..") < 0)
- result = 1;
+ result = -1;
}
}
}
@@ -584,9 +584,13 @@ ftw_startup (const char *dir, int is_nftw, void *func, int descriptors,
/* Get stat info for start directory. */
if (result == 0)
{
+ const char *name = ((data.flags & FTW_CHDIR)
+ ? data.dirbuf + data.ftw.base
+ : data.dirbuf);
+
if (((flags & FTW_PHYS)
- ? LXSTAT (_STAT_VER, data.dirbuf, &st)
- : XSTAT (_STAT_VER, data.dirbuf, &st)) < 0)
+ ? LXSTAT (_STAT_VER, name, &st)
+ : XSTAT (_STAT_VER, name, &st)) < 0)
{
if (!(flags & FTW_PHYS)
&& errno == ENOENT