Project

General

Profile

Statistics
| Revision:

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