Hi Ross, I hope you don't mind that I CC the list and Krzysztof who needed the line which caused the problem on your side.
On Tue, Mar 02, 2010 at 05:36:05PM -0500, Ross West wrote: > > WT> Please tell me if the above works. If so, just send me a patch and I'll > WT> happily apply it. I still have to start my Sun in order to fix the build > WT> on Solaris, and I'd like to release 1.4.1 with those build fixes in it. > > The two additions didn't work, but I've tracked it down. The good > news is that it's not really your bug, but FreeBSD's, which got fixed > in 8.0. > > The issue is the inclusion of the "#define _XOPEN_SOURCE 500" in > auth.c. Hehe interesting, I just converged to the same line for the solaris build issue. > On older FB versions (ie: below 8.0), it triggers a change in > sys/types.h to not include sys/select.h. sys/time.h was modified > starting in FB 8.0+ to include sys/select.h always. > > Basically as someone else mentioned: "The problem lies in FreeBSD's > headers, which don't implement namespace separation correctly." > > In which case I'll just write a simple patch that I'll include with > the port build which can add an "#include <sys/select.h>" line to > auth.c for older OS versions. Well, we're on pretty standard code and I'd rather avoid as much as possible OS version tests on such code, as we all know how it ends up in unmanageable chunks of code depending on autoconf and making us all pull off our hair. I also don't like adding an include which is unrelated to the parts used by a C file. However we may need that include into the file which needs it (standard.h at least since it's the one making use of fd_set). If it's the XOPEN_SOURCE line which is causing these issues, either we manage to push it a bit below, which will make things work by pure luck, or we find how to get rid of it, which would be preferred, considering that this line alone apparently breaks solaris and freebsd, which does not surprize me much given the bad experiences I had with such defines :-/ > IMHO, it's not really your bug to fix. Well, it is if we break several platforms to try to fix a warning on another one. Maybe it's the another one which is buggy instead. Also if we only need this line to get crypt() to be defined on some linux platforms, maybe we can also define it ourselves. Thanks, Willy

