82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*	$NetBSD: featuretest.h,v 1.9 2009/05/04 16:44:14 ginsbach Exp $	*/
 | |
| 
 | |
| /*
 | |
|  * Written by Klaus Klein <kleink@NetBSD.org>, February 2, 1998.
 | |
|  * Public domain.
 | |
|  *
 | |
|  * NOTE: Do not protect this header against multiple inclusion.  Doing
 | |
|  * so can have subtle side-effects due to header file inclusion order
 | |
|  * and testing of e.g. _POSIX_SOURCE vs. _POSIX_C_SOURCE.  Instead,
 | |
|  * protect each CPP macro that we want to supply.
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * Feature-test macros are defined by several standards, and allow an
 | |
|  * application to specify what symbols they want the system headers to
 | |
|  * expose, and hence what standard they want them to conform to.
 | |
|  * There are two classes of feature-test macros.  The first class
 | |
|  * specify complete standards, and if one of these is defined, header
 | |
|  * files will try to conform to the relevant standard.  They are:
 | |
|  *
 | |
|  * ANSI macros:
 | |
|  * _ANSI_SOURCE			ANSI C89
 | |
|  *
 | |
|  * POSIX macros:
 | |
|  * _POSIX_SOURCE == 1		IEEE Std 1003.1 (version?)
 | |
|  * _POSIX_C_SOURCE == 1		IEEE Std 1003.1-1990
 | |
|  * _POSIX_C_SOURCE == 2		IEEE Std 1003.2-1992
 | |
|  * _POSIX_C_SOURCE == 199309L	IEEE Std 1003.1b-1993
 | |
|  * _POSIX_C_SOURCE == 199506L	ISO/IEC 9945-1:1996
 | |
|  * _POSIX_C_SOURCE == 200112L	IEEE Std 1003.1-2001
 | |
|  * _POSIX_C_SOURCE == 200809L   IEEE Std 1003.1-2008
 | |
|  *
 | |
|  * X/Open macros:
 | |
|  * _XOPEN_SOURCE		System Interfaces and Headers, Issue 4, Ver 2
 | |
|  * _XOPEN_SOURCE_EXTENDED == 1	XSH4.2 UNIX extensions
 | |
|  * _XOPEN_SOURCE == 500		System Interfaces and Headers, Issue 5
 | |
|  * _XOPEN_SOURCE == 520		Networking Services (XNS), Issue 5.2
 | |
|  * _XOPEN_SOURCE == 600		IEEE Std 1003.1-2001, XSI option
 | |
|  * _XOPEN_SOURCE == 700		IEEE Std 1003.1-2008, XSI option
 | |
|  *
 | |
|  * NetBSD macros:
 | |
|  * _NETBSD_SOURCE == 1		Make all NetBSD features available.
 | |
|  *
 | |
|  * If more than one of these "major" feature-test macros is defined,
 | |
|  * then the set of facilities provided (and namespace used) is the
 | |
|  * union of that specified by the relevant standards, and in case of
 | |
|  * conflict, the earlier standard in the above list has precedence (so
 | |
|  * if both _POSIX_C_SOURCE and _NETBSD_SOURCE are defined, the version
 | |
|  * of rename() that's used is the POSIX one).  If none of the "major"
 | |
|  * feature-test macros is defined, _NETBSD_SOURCE is assumed.
 | |
|  *
 | |
|  * There are also "minor" feature-test macros, which enable extra
 | |
|  * functionality in addition to some base standard.  They should be
 | |
|  * defined along with one of the "major" macros.  The "minor" macros
 | |
|  * are:
 | |
|  *
 | |
|  * _REENTRANT
 | |
|  * _ISOC99_SOURCE
 | |
|  * _LARGEFILE_SOURCE		Large File Support
 | |
|  *		<http://ftp.sas.com/standards/large.file/x_open.20Mar96.html>
 | |
|  */
 | |
| 
 | |
| #if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
 | |
| #define _POSIX_C_SOURCE	1L
 | |
| #endif
 | |
| 
 | |
| #if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
 | |
|     !defined(_XOPEN_SOURCE) && !defined(_NETBSD_SOURCE)
 | |
| #define _NETBSD_SOURCE 1
 | |
| #endif
 | |
| 
 | |
| /* Never define _REENTRANT on Minix */
 | |
| 
 | |
| #ifdef __minix
 | |
| 
 | |
| #if ((_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500) && \
 | |
|     !defined(_REENTRANT)
 | |
| #define _REENTRANT
 | |
| #endif
 | |
| 
 | |
| #endif /* __minix */
 | 
