Jim Meyering <[EMAIL PROTECTED]> wrote: > Miklos Szeredi <[EMAIL PROTECTED]> wrote: >> I've tried out the CVS version of findutils+gnulib, and it does indeed >> seem to fix the problem with inode-less filesystems, in addition to >> using noticably less system time. >> >> I've also found that the -xdev option of find no longer works: it >> outputs just a single line for the base directory. > > Thanks for reporting that. > That's a bug I introduced yesterday. > With FTS_XDEV, p->fts_statp->st_dev is used uninitialized.
Here's the patch (same as proposed, but with a comment), followed by a patch to add a findutils test that exercises the bug. 2006-10-13 Jim Meyering <[EMAIL PROTECTED]> Fix a bug in yesterday's change. * lib/fts.c (fts_open): When using FTS_XDEV|FTS_NOSTAT, p->fts_statp->st_dev would be used uninitialized. Ensures that we always call fts_stat on the very first entry. Miklos Szeredi reported that find -xdev stopped working. Index: lib/fts.c =================================================================== RCS file: /sources/gnulib/gnulib/lib/fts.c,v retrieving revision 1.21 diff -u -r1.21 fts.c --- lib/fts.c 12 Oct 2006 10:36:51 -0000 1.21 +++ lib/fts.c 14 Oct 2006 06:28:14 -0000 @@ -396,7 +396,10 @@ p->fts_level = FTS_ROOTLEVEL; p->fts_parent = parent; p->fts_accpath = p->fts_name; - if (defer_stat) { + /* Even when defer_stat is true, be sure to stat the first + command line argument, since fts_read (at least with + FTS_XDEV) requires that. */ + if (defer_stat && root != NULL) { p->fts_info = FTS_NSOK; fts_set_stat_required(p, true); } else { --- /dev/null 2006-09-30 18:47:07.772235750 +0200 +++ find/testsuite/find.posix/xdev.exp 2006-10-14 08:15:27.541426401 +0200 @@ -0,0 +1,5 @@ +# tests for -xdev making fts use uninitialized memory +exec rm -rf tmp +exec mkdir -p tmp/x +find_start p {tmp -xdev } +exec rm -rf tmp --- /dev/null 2006-09-30 18:47:07.772235750 +0200 +++ find/testsuite/find.posix/xdev.xo 2006-10-14 08:16:13.355072613 +0200 @@ -0,0 +1,2 @@ +tmp +tmp/x _______________________________________________ Bug-findutils mailing list Bug-findutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-findutils