There's rather a lot of software that defines _POSIX_C_SOURCE to some value (usually 200809L for POSIX-1.2008), but also wants to use other things.
One can generally work around this issue by defining __BSD_VISIBLE=1, but most other systems have something more specific. NetBSD has _NETBSD_SOURCE. OpenBSD has _OPENBSD_SOURCE as well. There's also some expectation that _BSD_SOURCE can be defined, but none of the currently active BSDs has that. It appears from casual inspection that _NETBSD_SOURCE=1 means approximately the same as __BSD_VISIBLE=1 in FreeBSD. Would it make sense to add a _FREEBSD_SOURCE=1 case and have it include __BSD_VISIBLE=1 regardless of what other macros (especially _POSIX_C_SOURCE) are defined to be a more regimented and defined way to expand the namespace when multiple namespaces are defined? Warner
