Tue 08 Aug 2006 06:09:07 PM UTC, comment #1:
It could just be that -depth is wrongly implemented in ftsfind.c:-
$ for find in /usr/bin/find find oldfind-dev find-dev ; do echo; echo $find : $( $find --version | sed -e 1q); strace -e lstat64 $find /tmp/X -maxdepth 1 -perm 0 -false -print ; done ; echo ; echo Layout:; find /tmp/X
/usr/bin/find : GNU find version 4.1.20
lstat64(".", {st_mode=S_IFDIR|0711, st_size=32768, ...}) = 0
lstat64("/tmp/X", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64(".", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("Y", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
find : GNU find version 4.2.29-CVS
lstat64(".", {st_mode=S_IFDIR|0711, st_size=32768, ...}) = 0
lstat64("X", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("Y", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
oldfind-dev : GNU find version 4.3.2-CVS
lstat64(".", {st_mode=S_IFDIR|0711, st_size=32768, ...}) = 0
lstat64("X", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("Y", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
find-dev : GNU find version 4.3.2-CVS
lstat64("/tmp/X", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("Y", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("Z", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("ZZ", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("ZZZ", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat64("q", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
Layout:
/tmp/X
/tmp/X/Y
/tmp/X/Y/Z
/tmp/X/Y/Z/P
/tmp/X/Y/ZZ
/tmp/X/Y/ZZZ
/tmp/X/Y/q
|