There is a stupid, stupid bug in FreeBSD 7 (up to and including the 7.3 release): The fdopendir() function is present in libc, but the prototype is missing from <dirent.h>.
GNU tar's configure picks up fdopendir(), but since there is no prototype, it ends up typed as int fdopendir(); This is bad. fdopendir() returns a pointer, which is truncated from 64 to 32 bits on LP64 platforms. Running GNU tar's "make check" leaves a trail of coredumps behind... The macro complex around m4/dirent*.m4 and m4/fdopendir.m4 needs some sort of check if fdopendir() is declared, and if not, must provide a prototype. These macros are probably used in other GNU projects as well, and bug-tar may not be the right address, but I'm throwing it out there in the hope that it will reach somebody who knows how to deal with this properly. -- Christian "naddy" Weisgerber [email protected]
