diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-01-12 20:44:20 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-01-12 20:44:20 +0000 |
commit | a5ce5fcf3830323f2d72c203491fa88a63a07036 (patch) | |
tree | 1313d4053d7f25edcf612ff7adc2e20e110409aa /io | |
parent | b398ae3c6da325b334319d061eaa84226dbe3141 (diff) | |
download | glibc-a5ce5fcf3830323f2d72c203491fa88a63a07036.tar.gz glibc-a5ce5fcf3830323f2d72c203491fa88a63a07036.tar.xz glibc-a5ce5fcf3830323f2d72c203491fa88a63a07036.zip |
Update.
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. * io/ftwtest-sh: Add test for relative path argument to nftw() with FTW_CHDIR option.
Diffstat (limited to 'io')
-rw-r--r-- | io/ftw.c | 13 | ||||
-rw-r--r-- | io/ftwtest-sh | 22 |
2 files changed, 25 insertions, 10 deletions
diff --git a/io/ftw.c b/io/ftw.c index 4debcc0542..f93d00f332 100644 --- a/io/ftw.c +++ b/io/ftw.c @@ -212,7 +212,7 @@ open_dir_stream (struct ftw_data *data, struct dir_data *dirp) { char *newp; bufsize += MAX (1024, 2 * this_len); - newp = realloc (buf, bufsize); + newp = (char *) realloc (buf, bufsize); if (newp == NULL) { /* No more memory. */ @@ -357,15 +357,8 @@ process_entry (struct ftw_data *data, struct dir_data *dir, const char *name, result = -1; } else - { - /* Please note that we overwrite a slash. */ - data->dirbuf[data->ftw.base - 1] = '\0'; - - if (__chdir (data->dirbuf) < 0) - result = -1; - - data->dirbuf[data->ftw.base - 1] = '/'; - } + if (__chdir ("..") < 0) + result = 1; } } } diff --git a/io/ftwtest-sh b/io/ftwtest-sh index 7fc82088ec..27b810073d 100644 --- a/io/ftwtest-sh +++ b/io/ftwtest-sh @@ -138,6 +138,28 @@ base = "$tmp/ftwtest.d/foo/lvl1/lvl2/lvl3/", file = "file@3", flag = FTW_F, cwd 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 = "", file = "ftwtest.d", flag = FTW_D, cwd = $tmpreal, 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 |