root / lab4 / .minix-src / include / sys / featuretest.h @ 14
History | View | Annotate | Download (3.1 KB)
1 | 13 | up20180614 | /* $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 |