From 46089c83d119050998387d7a8fb896514c92618b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 17 Dec 2001 23:10:14 +0000 Subject: Update. 2001-12-17 Ulrich Drepper * io/ftw.c (ftw_dir): Handle inaccessibility of toplevel dir different than implemented in last patch. * io/bug-ftw3.c: Adjust test for changed handling of inaccessibility of toplevel dir. --- io/bug-ftw3.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'io/bug-ftw3.c') diff --git a/io/bug-ftw3.c b/io/bug-ftw3.c index 98bb563..e3f24d6 100644 --- a/io/bug-ftw3.c +++ b/io/bug-ftw3.c @@ -4,10 +4,13 @@ #include #include +static int cb_called; + static int cb (const char *fname, const struct stat *st, int flag) { printf ("%s %d\n", fname, flag); + cb_called = 1; return 0; } @@ -15,7 +18,9 @@ int main (void) { char tmp[] = "/tmp/ftwXXXXXX"; + char tmp2[] = "/tmp/ftwXXXXXX/ftwXXXXXX"; char *dname; + char *dname2; int r; int e; @@ -26,13 +31,23 @@ main (void) exit (1); } - if (chmod (dname, S_IWUSR|S_IXUSR|S_IWGRP|S_IXGRP|S_IWOTH|S_IXOTH) != 0) + memcpy (tmp2, tmp, strlen (tmp)); + dname2 = mkdtemp (tmp2); + if (dname2 == NULL) + { + printf ("mkdtemp: %m\n"); + rmdir (dname); + exit (1); + } + + if (chmod (dname, S_IWUSR|S_IWGRP|S_IWOTH) != 0) { printf ("chmod: %m\n"); + rmdir (dname); exit (1); } - r = ftw (dname, cb, 10); + r = ftw (dname2, cb, 10); e = errno; printf ("r = %d", r); if (r != 0) @@ -40,7 +55,8 @@ main (void) puts (""); chmod (dname, S_IRWXU|S_IRWXG|S_IRWXO); + rmdir (dname2); rmdir (dname); - return r != -1 && e == EACCES; + return (r != -1 && e == EACCES) || cb_called; } -- cgit v1.1