* io/ftw.c (ftw_startup): Handle special case of FTW_CHDIR in /.
(open_dir_stream): Likewise.
* io/Makefile (tests): Add bug-ftw5.
io/bug-ftw5.c: New file.
2007-02-21 Ulrich Drepper <drepper@redhat.com>
+ [BZ #4076]
+ * io/ftw.c (ftw_startup): Handle special case of FTW_CHDIR in /.
+ (open_dir_stream): Likewise.
+ * io/Makefile (tests): Add bug-ftw5.
+ io/bug-ftw5.c: New file.
+
* nscd/hstcache.c (cache_addhst): Remove unnecessary conditional.
* nscd/servicescache.c (cache_addserv): Likewise.
-# Copyright (C) 1992-2002,2003,2005,2006 Free Software Foundation, Inc.
+# Copyright (C) 1992-2002,2003,2005,2006, 2007 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
tst-openat tst-unlinkat tst-fstatat tst-futimesat \
tst-renameat tst-fchownat tst-fchmodat tst-faccessat \
tst-symlinkat tst-linkat tst-readlinkat tst-mkdirat \
- tst-mknodat tst-mkfifoat tst-ttyname_r
+ tst-mknodat tst-mkfifoat tst-ttyname_r bug-ftw5
distribute := ftwtest-sh
--- /dev/null
+#include <errno.h>
+#include <ftw.h>
+#include <stdio.h>
+
+static int
+fn (const char *file, const struct stat *sb, int flag, struct FTW *s)
+{
+ puts (file);
+ return FTW_STOP;
+}
+
+static int
+do_test (void)
+{
+ if (nftw ("/", fn, 0, FTW_CHDIR | FTW_ACTIONRETVAL) < 0)
+ {
+ printf ("nftw / FTW_CHDIR: %m\n");
+ return 1;
+ }
+
+ return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
/* File tree walker functions.
- Copyright (C) 1996-2003, 2004, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1996-2003, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
}
else
{
- const char *name = ((data->flags & FTW_CHDIR)
- ? data->dirbuf + data->ftw.base: data->dirbuf);
+ const char *name;
+
+ if (data->flags & FTW_CHDIR)
+ {
+ name = data->dirbuf + data->ftw.base;
+ if (name[0] == '\0')
+ name = ".";
+ }
+ else
+ name = data->dirbuf;
+
dirp->stream = __opendir (name);
}
/* Get stat info for start directory. */
if (result == 0)
{
- const char *name = ((data.flags & FTW_CHDIR)
- ? data.dirbuf + data.ftw.base
- : data.dirbuf);
+ const char *name;
+
+ if (data.flags & FTW_CHDIR)
+ {
+ name = data.dirbuf + data.ftw.base;
+ if (name[0] == '\0')
+ name = ".";
+ }
+ else
+ name = data.dirbuf;
if (((flags & FTW_PHYS)
? LXSTAT (_STAT_VER, name, &st)
+2007-02-21 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/pthread-functions.h: Correct last patch, correct
+ PTHFCT_CALL definition.
+
2007-02-18 Ulrich Drepper <drepper@redhat.com>
* sysdeps/pthread/pthread-functions.h: If PTR_DEMANGLE is not