misc/156637: sys/types.h can't be included when _XOPEN_SOURCE is defined

Garrett Wollman wollman at hergotha.csail.mit.edu
Mon Apr 25 18:00:24 UTC 2011

The following reply was made to PR misc/156637; it has been noted by GNATS.

From: Garrett Wollman <wollman at hergotha.csail.mit.edu>
To: streambag at streambag.se
Cc: freebsd-gnats-submit at freebsd.org
Subject: Re: misc/156637: sys/types.h can't be included when _XOPEN_SOURCE is
Date: Mon, 25 Apr 2011 13:51:31 -0400 (EDT)

 >When including <sys/file.h> with _XOPEN_SOURCE defined to 500 or higher, compila
 >tion will fail with a message similar to this one (using clang, gcc fails with a
 > similar message):
 Which edition of the standard specifies <sys/file.h>?  It's not in my 
 copy of Issue 6 (SUSv3) or Issue 7 (SUSv4). 
 I'd say it's the application code that is in error.  It should not be
 defining _XOPEN_SOURCE and then including (implementation private)
 header files which are not defined in the relevant standard.
 Do we seriously need to start writing our headers like:
 #include <sys/cdefs.h>
 #ifndef __BSD_VISIBLE
 #error "This is a non-standard header, but you have specified strict standard compliance."
 ?  This probably goes along with my fix to <sys/cdefs.h> which does:
 #ifdef __BSD_VISIBLE
 #error "Application defined preprocessor macro in the implementation namespace."

More information about the freebsd-bugs mailing list