| [4] | 1 | /* The <ansi.h> header attempts to decide whether the compiler has enough
 | 
|---|
 | 2 |  * conformance to Standard C for Minix to take advantage of.  If so, the
 | 
|---|
 | 3 |  * symbol _ANSI is defined (as 31459).  Otherwise _ANSI is not defined
 | 
|---|
 | 4 |  * here, but it may be defined by applications that want to bend the rules.
 | 
|---|
 | 5 |  * The magic number in the definition is to inhibit unnecessary bending
 | 
|---|
 | 6 |  * of the rules.  (For consistency with the new '#ifdef _ANSI" tests in
 | 
|---|
 | 7 |  * the headers, _ANSI should really be defined as nothing, but that would
 | 
|---|
 | 8 |  * break many library routines that use "#if _ANSI".)
 | 
|---|
 | 9 | 
 | 
|---|
 | 10 |  * If _ANSI ends up being defined, a macro
 | 
|---|
 | 11 |  *
 | 
|---|
 | 12 |  *      _PROTOTYPE(function, params)
 | 
|---|
 | 13 |  *
 | 
|---|
 | 14 |  * is defined.  This macro expands in different ways, generating either
 | 
|---|
 | 15 |  * ANSI Standard C prototypes or old-style K&R (Kernighan & Ritchie)
 | 
|---|
 | 16 |  * prototypes, as needed.  Finally, some programs use _CONST, _VOIDSTAR etc
 | 
|---|
 | 17 |  * in such a way that they are portable over both ANSI and K&R compilers.
 | 
|---|
 | 18 |  * The appropriate macros are defined here.
 | 
|---|
 | 19 |  */
 | 
|---|
 | 20 | 
 | 
|---|
 | 21 | #ifndef _ANSI_H
 | 
|---|
 | 22 | #define _ANSI_H
 | 
|---|
 | 23 | 
 | 
|---|
 | 24 | #if __STDC__ == 1
 | 
|---|
 | 25 | #define _ANSI           31459   /* compiler claims full ANSI conformance */
 | 
|---|
 | 26 | #endif
 | 
|---|
 | 27 | 
 | 
|---|
 | 28 | #ifdef __GNUC__
 | 
|---|
 | 29 | #define _ANSI           31459   /* gcc conforms enough even in non-ANSI mode */
 | 
|---|
 | 30 | #endif
 | 
|---|
 | 31 | 
 | 
|---|
 | 32 | #ifdef _ANSI
 | 
|---|
 | 33 | 
 | 
|---|
 | 34 | /* Keep everything for ANSI prototypes. */
 | 
|---|
 | 35 | #define _PROTOTYPE(function, params)    function params
 | 
|---|
 | 36 | #define _ARGS(params)                   params
 | 
|---|
 | 37 | 
 | 
|---|
 | 38 | #define _VOIDSTAR       void *
 | 
|---|
 | 39 | #define _VOID           void
 | 
|---|
 | 40 | #define _CONST          const
 | 
|---|
 | 41 | #define _VOLATILE       volatile
 | 
|---|
 | 42 | #define _SIZET          size_t
 | 
|---|
 | 43 | 
 | 
|---|
 | 44 | #else
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 | /* Throw away the parameters for K&R prototypes. */
 | 
|---|
 | 47 | #define _PROTOTYPE(function, params)    function()
 | 
|---|
 | 48 | #define _ARGS(params)                   ()
 | 
|---|
 | 49 | 
 | 
|---|
 | 50 | #define _VOIDSTAR       void *
 | 
|---|
 | 51 | #define _VOID           void
 | 
|---|
 | 52 | #define _CONST
 | 
|---|
 | 53 | #define _VOLATILE
 | 
|---|
 | 54 | #define _SIZET          int
 | 
|---|
 | 55 | 
 | 
|---|
 | 56 | #endif /* _ANSI */
 | 
|---|
 | 57 | 
 | 
|---|
 | 58 | /* This should be defined as restrict when a C99 compiler is used. */
 | 
|---|
 | 59 | #define _RESTRICT
 | 
|---|
 | 60 | 
 | 
|---|
 | 61 | /* Setting any of _MINIX, _POSIX_C_SOURCE or _POSIX2_SOURCE implies
 | 
|---|
 | 62 |  * _POSIX_SOURCE.  (Seems wrong to put this here in ANSI space.)
 | 
|---|
 | 63 |  */
 | 
|---|
 | 64 | #if defined(_MINIX) || _POSIX_C_SOURCE > 0 || defined(_POSIX2_SOURCE)
 | 
|---|
 | 65 | #undef _POSIX_SOURCE
 | 
|---|
 | 66 | #define _POSIX_SOURCE   1
 | 
|---|
 | 67 | #endif
 | 
|---|
 | 68 | 
 | 
|---|
 | 69 | #endif /* ANSI_H */
 | 
|---|