find(1): Is this a bug or not?

Kevin Lo kevlo at FreeBSD.org
Wed Dec 1 05:36:12 UTC 2010


Bakul Shah wrote:
> On Mon, 29 Nov 2010 12:39:43 PST Matthew Jacob <mj at feral.com>  wrote:
> > can you report out the actual command line you're using and what release 
> > it's from?
> > 
> > On 11/29/2010 12:08 PM, Denise H. G. wrote:
> > > Hi,
> > >
> > > I found that, while searching for empty directories, find(1) will not
> > > continue if it encounters a dir it can't enter (e.g. no privilege). I
> > > don't know if it's so designed... I've checked NetBSD and OpenBSD's
> > > implementations (almost identical to that of FreeBSD's). And they behave
> > > the same way as FreeBSD's find(1) does under the circumstance.
> > >
> > > I'm wondering if this is a bug or not.
> 
> This looks like a long standing bug:
> 
> % mkdir -p a/{b,c}/d/e/f
> % find a -empty
> % chmod 000 a/b/d/ef
> % find a -empty
> 
> The fix:
> 
> % cd /usr/src/usr.bin/find
> % svn diff
> Index: function.c
> ===================================================================
> --- function.c  (revision 212707)
> +++ function.c  (working copy)
> @@ -560,7 +560,7 @@
> 		empty = 1;
> 		dir = opendir(entry->fts_accpath);
> 		if (dir == NULL)
> -			err(1, "%s", entry->fts_accpath);
> +			return 0;
> 		for (dp = readdir(dir); dp; dp = readdir(dir))
> 		        if (dp->d_name[0] != '.' ||
> 			    (dp->d_name[1] != '\0' &&
> 

Your patch looks good to me. I'll commit it in a few days if there's
no objection.

	Kevin



More information about the freebsd-hackers mailing list