On Tue, 2008-10-28 at 10:15 -0400, James Carlson wrote:
> Peter Memishian writes:
> > 
> >  > I think there's a bug in <sys/types.h> in that B_TRUE and B_FALSE
> >  > disappear from the namespace if you request XOPEN_ or POSIX compliance
> >  > with extensions via defines such as:
> >  > 
> >  >  -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
> > 
> > I agree this seems bogus.  I've seen folks workaround it by #defining
> > B_TRUE to _B_TRUE and (e.g., in Makefiles).
> 
> It seems bogus, but if I recall correctly, the standards conformance
> gurus say that we're not allowed to walk into the user's name space in
> this way: those symbols are defined by the standards, so they must not
> exist.

That appears to be true if __EXTENSIONS__ is not defined, but in this
case it is -- __EXTENSIONS__ is supposed to allow symbols not
specifically mentioned in the standard to appear.

> The real breakage here, I think, is that ancillary data is
> inaccessible from native (Solaris; not standards-compliant) sockets.
> That's *really* bogus.

Indeed.  Back in 2005, I wrote (in section 6.2 of the PSARC opinion for
2005/683):
        
        Unnecessarily divergent behavior between standards-compliant
        and default variants of the commands we ship in Solaris is a
        recurring source of irritation, confusion, and  dissatisfac-
        tion.   While  each  individual  instance  of  divergence is
        minor, the cumulative impact is akin to that of  a  thousand
        paper  cuts.  
        
This is really the same problem in a different context (libraries rather
than commands).

                                                - Bill

        
_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to