diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-01-12 22:54:47 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-01-12 22:54:47 +0000 |
commit | b2608c22036ee37754d87185c29a0b986b7e70c6 (patch) | |
tree | ed9d8ac242ba7cb8915000162b3a699f5eef63a0 | |
parent | a5ce5fcf3830323f2d72c203491fa88a63a07036 (diff) | |
download | glibc-b2608c22036ee37754d87185c29a0b986b7e70c6.zip glibc-b2608c22036ee37754d87185c29a0b986b7e70c6.tar.gz glibc-b2608c22036ee37754d87185c29a0b986b7e70c6.tar.bz2 |
Update.
* io/ftwtest-sh: Add test case for relative path with /. at the end.
2003-01-12 Jim Meyering <jim@meyering.net>
* io/ftw.c (ftw_startup): When trying to stat the starting directory,
use the basename if we've already chdir'd into its parent directory.
2003-01-12 Ulrich Drepper <drepper@redhat.com>
to change directory after call to ftw_dir.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | io/ftw.c | 10 | ||||
-rw-r--r-- | io/ftwtest-sh | 22 |
3 files changed, 39 insertions, 4 deletions
@@ -1,7 +1,16 @@ 2003-01-12 Ulrich Drepper <drepper@redhat.com> + * io/ftwtest-sh: Add test case for relative path with /. at the end. + +2003-01-12 Jim Meyering <jim@meyering.net> + + * io/ftw.c (ftw_startup): When trying to stat the starting directory, + use the basename if we've already chdir'd into its parent directory. + +2003-01-12 Ulrich Drepper <drepper@redhat.com> + * io/ftw.c (process_entry): Use relative path when using chdir() - to change direcoty after call to ftw_dir. + to change directory after call to ftw_dir. * io/ftwtest-sh: Add test for relative path argument to nftw() with FTW_CHDIR option. @@ -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 diff --git a/io/ftwtest-sh b/io/ftwtest-sh index 27b8100..4f3b786 100644 --- a/io/ftwtest-sh +++ b/io/ftwtest-sh @@ -160,6 +160,28 @@ base = "ftwtest.d/foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd = $tm EOF rm $testout +curwd=`/bin/pwd 2>/dev/null || /usr/bin/pwd` +cd "$tmp" +LD_LIBRARY_PATH=$objpfx $ldso $testprogram --chdir ftwtest.d/. | + sort > $testout +cd "$curwd" + +cat <<EOF | diff -u $testout - || exit 1 +base = "ftwtest.d/", file = ".", flag = FTW_D, cwd = $tmpreal/ftwtest.d, level = 0 +base = "ftwtest.d/./", file = "bar", flag = FTW_D, cwd = $tmpreal/ftwtest.d, level = 1 +base = "ftwtest.d/./", file = "baz", flag = FTW_F, cwd = $tmpreal/ftwtest.d, level = 1 +base = "ftwtest.d/./", file = "foo", flag = FTW_D, cwd = $tmpreal/ftwtest.d, level = 1 +base = "ftwtest.d/./bar/", file = "xo", flag = FTW_F, cwd = $tmpreal/ftwtest.d/bar, level = 2 +base = "ftwtest.d/./foo/", file = "lvl1", flag = FTW_D, cwd = $tmpreal/ftwtest.d/foo, level = 2 +base = "ftwtest.d/./foo/lvl1/", file = "file@1", flag = FTW_F, cwd = $tmpreal/ftwtest.d/foo/lvl1, level = 3 +base = "ftwtest.d/./foo/lvl1/", file = "link@1", flag = FTW_SLN, cwd = $tmpreal/ftwtest.d/foo/lvl1, level = 3 +base = "ftwtest.d/./foo/lvl1/", file = "lvl2", flag = FTW_D, cwd = $tmpreal/ftwtest.d/foo/lvl1, level = 3 +base = "ftwtest.d/./foo/lvl1/lvl2/", file = "file@2", flag = FTW_F, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2, level = 4 +base = "ftwtest.d/./foo/lvl1/lvl2/", file = "lvl3", flag = FTW_D, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2, level = 4 +base = "ftwtest.d/./foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd = $tmpreal/ftwtest.d/foo/lvl1/lvl2/lvl3, level = 5 +EOF +rm $testout + LD_LIBRARY_PATH=$objpfx $ldso $testprogram --early-exit $tmpdir | sort > $testout |