On Wed, Dec 17, 2008 at 2:11 AM, Bastien ROUCARIES <roucaries.bast...@gmail.com> wrote: > On Wed, Dec 17, 2008 at 12:57 AM, Steve McIntyre <st...@einval.com> wrote: >> Luca wrote: >>>2008/12/16 Luca Niccoli <lultimou...@gmail.com>: >>> >>>> I can't really see what I'm doing wrong... >>> >>>Maybe I have a clue: >>> >>>++file_filter(const struct dirent *dir) >>>++{ >>>++ return (DT_REG == (DT_REG & dir->d_type)) || >>>++ (DT_LNK == (DT_LNK & dir->d_type)) ; >>>++} >>> >>>But I use XFS, which seems to have some problems with d_type [1] >>>I'm not really sure this is the source of the problem, but I thought >>>it was worth giving a try... > > Reading the man page of readdir you should alway test for DT_UNKNOWN, > and fallback to stat > if DT_UNKNOWN is set. And you should guard this test by #ifdef > _DIRENT_HAVE_D_TYPE
> Moreover if you read getdents manpage, you will read that d_type is > only filled since 2.6.4! In all the case I think we need to open a bug > for getdents manpage it does not specify that d_type is DT_UNKNOW > before 2.6.4 (backward compatibilty). I will fill a bug report. I should add that man page specify that DT_UNKNOW should be handled see http://www.kernel.org/doc/man-pages/online/pages/man2/getdents.2.html > Perhaps filling a bug to manpage will be appropriate because wording > is not clear. > > Please beware that they are issue with link and directory. Like for instance > in > http://mail.kde.org/pipermail/kdelibs-bugs/2008-March/001006.html > > d_type is an optimization not a thing that alway work. > > Bastien > > >> I don't know about the exact state today, but at least in the past >> many filesystems have not filled in d_type in readdir() calls. If you >> want to see the type of a filesystem object safely and portably, >> you'll need to call stat() or similar on each file. >> >> -- >> Steve McIntyre, Cambridge, UK. >> st...@einval.com >> Mature Sporty Personal >> More Innovation More Adult >> A Man in Dandism >> Powered Midship Specialty >> >> >> -- >> To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org >> with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org >> >> > -- To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org