root / lab4 / .minix-src / include / sys / featuretest.h @ 14
History | View | Annotate | Download (3.1 KB)
1 |
/* $NetBSD: featuretest.h,v 1.10 2013/04/26 18:29:06 christos Exp $ */
|
---|---|
2 |
|
3 |
/*
|
4 |
* Written by Klaus Klein <kleink@NetBSD.org>, February 2, 1998.
|
5 |
* Public domain.
|
6 |
*
|
7 |
* NOTE: Do not protect this header against multiple inclusion. Doing
|
8 |
* so can have subtle side-effects due to header file inclusion order
|
9 |
* and testing of e.g. _POSIX_SOURCE vs. _POSIX_C_SOURCE. Instead,
|
10 |
* protect each CPP macro that we want to supply.
|
11 |
*/
|
12 |
|
13 |
/*
|
14 |
* Feature-test macros are defined by several standards, and allow an
|
15 |
* application to specify what symbols they want the system headers to
|
16 |
* expose, and hence what standard they want them to conform to.
|
17 |
* There are two classes of feature-test macros. The first class
|
18 |
* specify complete standards, and if one of these is defined, header
|
19 |
* files will try to conform to the relevant standard. They are:
|
20 |
*
|
21 |
* ANSI macros:
|
22 |
* _ANSI_SOURCE ANSI C89
|
23 |
*
|
24 |
* POSIX macros:
|
25 |
* _POSIX_SOURCE == 1 IEEE Std 1003.1 (version?)
|
26 |
* _POSIX_C_SOURCE == 1 IEEE Std 1003.1-1990
|
27 |
* _POSIX_C_SOURCE == 2 IEEE Std 1003.2-1992
|
28 |
* _POSIX_C_SOURCE == 199309L IEEE Std 1003.1b-1993
|
29 |
* _POSIX_C_SOURCE == 199506L ISO/IEC 9945-1:1996
|
30 |
* _POSIX_C_SOURCE == 200112L IEEE Std 1003.1-2001
|
31 |
* _POSIX_C_SOURCE == 200809L IEEE Std 1003.1-2008
|
32 |
*
|
33 |
* X/Open macros:
|
34 |
* _XOPEN_SOURCE System Interfaces and Headers, Issue 4, Ver 2
|
35 |
* _XOPEN_SOURCE_EXTENDED == 1 XSH4.2 UNIX extensions
|
36 |
* _XOPEN_SOURCE == 500 System Interfaces and Headers, Issue 5
|
37 |
* _XOPEN_SOURCE == 520 Networking Services (XNS), Issue 5.2
|
38 |
* _XOPEN_SOURCE == 600 IEEE Std 1003.1-2001, XSI option
|
39 |
* _XOPEN_SOURCE == 700 IEEE Std 1003.1-2008, XSI option
|
40 |
*
|
41 |
* NetBSD macros:
|
42 |
* _NETBSD_SOURCE == 1 Make all NetBSD features available.
|
43 |
*
|
44 |
* If more than one of these "major" feature-test macros is defined,
|
45 |
* then the set of facilities provided (and namespace used) is the
|
46 |
* union of that specified by the relevant standards, and in case of
|
47 |
* conflict, the earlier standard in the above list has precedence (so
|
48 |
* if both _POSIX_C_SOURCE and _NETBSD_SOURCE are defined, the version
|
49 |
* of rename() that's used is the POSIX one). If none of the "major"
|
50 |
* feature-test macros is defined, _NETBSD_SOURCE is assumed.
|
51 |
*
|
52 |
* There are also "minor" feature-test macros, which enable extra
|
53 |
* functionality in addition to some base standard. They should be
|
54 |
* defined along with one of the "major" macros. The "minor" macros
|
55 |
* are:
|
56 |
*
|
57 |
* _REENTRANT
|
58 |
* _ISOC99_SOURCE
|
59 |
* _ISOC11_SOURCE
|
60 |
* _LARGEFILE_SOURCE Large File Support
|
61 |
* <http://ftp.sas.com/standards/large.file/x_open.20Mar96.html>
|
62 |
*/
|
63 |
|
64 |
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
|
65 |
#define _POSIX_C_SOURCE 1L |
66 |
#endif
|
67 |
|
68 |
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
|
69 |
!defined(_XOPEN_SOURCE) && !defined(_NETBSD_SOURCE) |
70 |
#define _NETBSD_SOURCE 1 |
71 |
#endif
|
72 |
|
73 |
/* Compatibility for older version of autotools. */
|
74 |
#if defined(_MINIX)
|
75 |
#undef _MINIX
|
76 |
#define _NETBSD_SOURCE 1 |
77 |
#endif /* defined(__minix) */ |
78 |
|
79 |
/* Never define _REENTRANT on Minix */
|
80 |
#if !defined(__minix)
|
81 |
#if ((_POSIX_C_SOURCE - 0) >= 199506L || (_XOPEN_SOURCE - 0) >= 500) && \ |
82 |
!defined(_REENTRANT) |
83 |
#define _REENTRANT
|
84 |
#endif /* !defined(__minix) */ |
85 |
#endif
|