On Thu, 14 Jan 2010 18:38:54 +0100, Adrian Perez de Castro <ape...@igalia.com> wrote: > > the offending commit is 2c4555f1a56602ff1dd55a63699810522ba4d91e > > > > from readdir (3): > > > > "Currently, only some file systems (among them: Btrfs, ext2, ext3, > > and ext4) have full support returning the file > > type in d_type. All applications must properly handle a return > > of DT_UNKNOWN."
Yes. The broken code was my mistake. I clearly didn't read the above warning closely enough. Sorry about that! > I am using XFS, which always returns DT_UNKNOWN. Taking into account that > there is a good deal of people using filesystems other than the ones you > mention, and that other non-linux filesystems may also return DT_UNKNOWN, > in my opinion there should be a fall-back. I will try to post a patch > Anytime Soon™. We definitely want the fallback. I can attempt to code it, but I don't have ready access to an afflicted filesystem, so I'd need help testing anyway. I'd love to see a patch for this bug soon. Be sure to CC me when the patch is sent and that will help me commit it sooner. > Also, I have the feeling that the "d_type" field from "struct dirent" may > not be available in some OSes because it is a BSD extension. I'm generally quite bad at determining whether functionality I'm using in my software is non-portable. As proven in this case, even when the man page tells me something is not portable I don't always notice, (and often, the man pages aren't even that useful). Beyond that, even if something is *known* to be theoretically non-portable, it can be a waste of time to code compatibility paths that nobody will be running in practice. So I've basically gotten to the point where I just code for what works on my system, (not out of disregard for what other people run---just that it's impossible for me to know what subset of functionality is actually relevant). Then, at the same time, I'm quite happy to accept code to improve the portability when people note that things are broken on other systems. See the git history and email archives for examples of how we fixed strndup and getline portability problems. I know that "wait for people to notice it's broken" isn't the nicest thing we could do with our code. But I don't really know a much better way. I'm happy to entertain suggestions here. -Carl
Description: PGP signature
_______________________________________________ notmuch mailing list firstname.lastname@example.org http://notmuchmail.org/mailman/listinfo/notmuch