Re: How to enable BSD defined names / functions

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Sun, 21 Nov 2021 21:28:47 UTC
On Sun, Nov 21, 2021 at 02:18:10PM -0700, Warner Losh wrote:
> On Sun, Nov 21, 2021 at 1:58 PM Konstantin Belousov <kostikbel@gmail.com>
> wrote:
> 
> > On Sun, Nov 21, 2021 at 01:51:00PM -0700, Warner Losh wrote:
> > > 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?
> >
> > Please note that _BSD_VISIBLE works by presence, and not by value.
> > Same as things like _GNU_SOURCE.
> >
> 
> This stuff is complicated, so I may have overlooked something. _GNU_SOURCE
> is indeed by presence. But I couldn't find any instances of _BSD_VISIBLE in
> the
> tree, just __BSD_VISIBLE where it's tested as simply '#if __BSD_VISIBLE'
> since it
> seems to be defined always. Have I overlooked something?
I mean __BSD_VISIBLE of course, sorry.  It is not user variable anyway.

> 
> 
> > Yes, it makes sense to have _FREEBSD_SOURCE symbol that would imply total
> > visibility and override any _POSIX_C_SOURCE.
> >
> 
> Great. I'll work up a patch.
> 
> Warner