Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Dec 2002 19:04:04 -0500
From:      Mike Barcroft <mike@FreeBSD.org>
To:        Marc Recht <marc@informatik.uni-bremen.de>
Cc:        David Schultz <dschultz@uclink.Berkeley.EDU>, freebsd-standards@FreeBSD.ORG
Subject:   Re: POSIX and the real life or FreeBSD too strict ?
Message-ID:  <20021208190404.H74206@espresso.q9media.com>
In-Reply-To: <794560000.1039386792@leeloo.intern.geht.de>; from marc@informatik.uni-bremen.de on Sun, Dec 08, 2002 at 11:33:12PM %2B0100
References:  <584000000.1039360297@leeloo.intern.geht.de> <20021208203949.GA535@HAL9000.homeunix.com> <758430000.1039382013@leeloo.intern.geht.de> <20021208214357.GA945@HAL9000.homeunix.com> <794560000.1039386792@leeloo.intern.geht.de>

next in thread | previous in thread | raw e-mail | index | archive | help

Marc Recht <marc@informatik.uni-bremen.de> writes:
> > If you say -D_XOPEN_SOURCE=600 instead of -D_XOPEN_SOURCE_=600,
> > the first test works fine.  ;-)
> Argh, too much copying between the systems. That was the rewritten one.. l 
> = sysconf has been
> l = getpagesize();
> before. Which gives you (Wall): implicit declaration of function 
> `getpagesize'. But, _only_ on FreeBSD 5-current.

Did you even look at the header to find out why?  The conditional says
`#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE'.  From this, one might
draw the conclusion that getpagesize() was supported in X/Open up
until version 500 (SUSv2).  Now, compare this to the actual standards
and one finds that in SUSv2 getpagesize() was marked LEGACY and in
SUSv3 it was removed.  If you want SUSv2 functions, use
_XOPEN_SOURCE=500 and an appropriate _POSIX_C_SOURCE version.

> > The second one looks like a bug in FreeBSD.
> For me, too.

As I explained in another thread in -current, requesting a standard
and then using headers outside that standard's scope is unsupported.
This is why no one has bother to change u_int to unsigned int in
most non-standard headers.

As for the extention to allow POSIX and BSD object to both be visible
by defining an extra constant, I don't think this is a very good idea.
You end up with each OS having a different escape word, each being
unportable.  A much more portable solution would be not to request a
specific standard at all if one requires things outside that
standard's scope.

Best regards,
Mike Barcroft

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-standards" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021208190404.H74206>