| 1 | /* | 
 
 
 
 
 | 2 | * limits.h | 
 
 
 
 
 | 3 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 4 | * This file is a part of the mingw-runtime package. | 
 
 
 
 
 | 5 | * No warranty is given; refer to the file DISCLAIMER within the package. | 
 
 
 
 
 | 6 | * | 
 
 
 
 
 | 7 | * Functions for manipulating paths and directories (included from io.h) | 
 
 
 
 
 | 8 | * plus functions for setting the current drive. | 
 
 
 
 
 | 9 | * | 
 
 
 
 
 | 10 | * Defines constants for the sizes of integral types. | 
 
 
 
 
 | 11 | * | 
 
 
 
 
 | 12 | * NOTE: GCC should supply a version of this header and it should be safe to | 
 
 
 
 
 | 13 | *       use that version instead of this one (maybe safer). | 
 
 
 
 
 | 14 | * | 
 
 
 
 
 | 15 | */ | 
 
 
 
 
 | 16 |  | 
 
 
 
 
 | 17 | #ifndef _LIMITS_H_ | 
 
 
 
 
 | 18 | #define _LIMITS_H_ | 
 
 
 
 
 | 19 |  | 
 
 
 
 
 | 20 | /* All the headers include this file. */ | 
 
 
 
 
 | 21 | #include <_mingw.h> | 
 
 
 
 
 | 22 |  | 
 
 
 
 
 | 23 | /* | 
 
 
 
 
 | 24 | * File system limits | 
 
 
 
 
 | 25 | * | 
 
 
 
 
 | 26 | * TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the | 
 
 
 
 
 | 27 | *       same as FILENAME_MAX and FOPEN_MAX from stdio.h? | 
 
 
 
 
 | 28 | * NOTE: PATH_MAX is the POSIX equivalent for Microsoft's MAX_PATH; the two | 
 
 
 
 
 | 29 | *       are semantically identical, with a limit of 259 characters for the | 
 
 
 
 
 | 30 | *       path name, plus one for a terminating NUL, for a total of 260. | 
 
 
 
 
 | 31 | */ | 
 
 
 
 
 | 32 | #ifndef __STRICT_ANSI__ | 
 
 
 
 
 | 33 | # define PATH_MAX       260 | 
 
 
 
 
 | 34 | #endif | 
 
 
 
 
 | 35 |  | 
 
 
 
 
 | 36 | /* | 
 
 
 
 
 | 37 | * Characteristics of the char data type. | 
 
 
 
 
 | 38 | * | 
 
 
 
 
 | 39 | * TODO: Is MB_LEN_MAX correct? | 
 
 
 
 
 | 40 | */ | 
 
 
 
 
 | 41 | #define CHAR_BIT        8 | 
 
 
 
 
 | 42 | #define MB_LEN_MAX      2 | 
 
 
 
 
 | 43 |  | 
 
 
 
 
 | 44 | #define SCHAR_MIN       (-128) | 
 
 
 
 
 | 45 | #define SCHAR_MAX       127 | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | #define UCHAR_MAX       255 | 
 
 
 
 
 | 48 |  | 
 
 
 
 
 | 49 | /* TODO: Is this safe? I think it might just be testing the preprocessor, | 
 
 
 
 
 | 50 | *       not the compiler itself... */ | 
 
 
 
 
 | 51 | #if     ('\x80' < 0) | 
 
 
 
 
 | 52 | #define CHAR_MIN        SCHAR_MIN | 
 
 
 
 
 | 53 | #define CHAR_MAX        SCHAR_MAX | 
 
 
 
 
 | 54 | #else | 
 
 
 
 
 | 55 | #define CHAR_MIN        0 | 
 
 
 
 
 | 56 | #define CHAR_MAX        UCHAR_MAX | 
 
 
 
 
 | 57 | #endif | 
 
 
 
 
 | 58 |  | 
 
 
 
 
 | 59 | /* | 
 
 
 
 
 | 60 | * Maximum and minimum values for ints. | 
 
 
 
 
 | 61 | */ | 
 
 
 
 
 | 62 | #define INT_MAX         2147483647 | 
 
 
 
 
 | 63 | #define INT_MIN         (-INT_MAX-1) | 
 
 
 
 
 | 64 |  | 
 
 
 
 
 | 65 | #define UINT_MAX        0xffffffff | 
 
 
 
 
 | 66 |  | 
 
 
 
 
 | 67 | /* | 
 
 
 
 
 | 68 | * Maximum and minimum values for shorts. | 
 
 
 
 
 | 69 | */ | 
 
 
 
 
 | 70 | #define SHRT_MAX        32767 | 
 
 
 
 
 | 71 | #define SHRT_MIN        (-SHRT_MAX-1) | 
 
 
 
 
 | 72 |  | 
 
 
 
 
 | 73 | #define USHRT_MAX       0xffff | 
 
 
 
 
 | 74 |  | 
 
 
 
 
 | 75 | /* | 
 
 
 
 
 | 76 | * Maximum and minimum values for longs and unsigned longs. | 
 
 
 
 
 | 77 | * | 
 
 
 
 
 | 78 | * TODO: This is not correct for Alphas, which have 64 bit longs. | 
 
 
 
 
 | 79 | */ | 
 
 
 
 
 | 80 | #define LONG_MAX        2147483647L | 
 
 
 
 
 | 81 | #define LONG_MIN        (-LONG_MAX-1) | 
 
 
 
 
 | 82 |  | 
 
 
 
 
 | 83 | #define ULONG_MAX       0xffffffffUL | 
 
 
 
 
 | 84 |  | 
 
 
 
 
 | 85 | #ifndef __STRICT_ANSI__ | 
 
 
 
 
 | 86 | /* POSIX wants this.  */ | 
 
 
 
 
 | 87 | #define SSIZE_MAX LONG_MAX | 
 
 
 
 
 | 88 | #endif | 
 
 
 
 
 | 89 |  | 
 
 
 
 
 | 90 | #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \ | 
 
 
 
 
 | 91 | || !defined(__STRICT_ANSI__) | 
 
 
 
 
 | 92 | /* ISO C9x macro names */ | 
 
 
 
 
 | 93 | #define LLONG_MAX 9223372036854775807LL | 
 
 
 
 
 | 94 | #define LLONG_MIN (-LLONG_MAX - 1) | 
 
 
 
 
 | 95 | #define ULLONG_MAX (2ULL * LLONG_MAX + 1) | 
 
 
 
 
 | 96 | #endif | 
 
 
 
 
 | 97 |  | 
 
 
 
 
 | 98 | /* | 
 
 
 
 
 | 99 | * The GNU C compiler also allows 'long long int' | 
 
 
 
 
 | 100 | */ | 
 
 
 
 
 | 101 | #if !defined(__STRICT_ANSI__) && defined(__GNUC__) | 
 
 
 
 
 | 102 |  | 
 
 
 
 
 | 103 | #define LONG_LONG_MAX   9223372036854775807LL | 
 
 
 
 
 | 104 | #define LONG_LONG_MIN   (-LONG_LONG_MAX-1) | 
 
 
 
 
 | 105 | #define ULONG_LONG_MAX  (2ULL * LONG_LONG_MAX + 1) | 
 
 
 
 
 | 106 |  | 
 
 
 
 
 | 107 | /* MSVC compatibility */ | 
 
 
 
 
 | 108 | #define _I64_MIN LONG_LONG_MIN | 
 
 
 
 
 | 109 | #define _I64_MAX LONG_LONG_MAX | 
 
 
 
 
 | 110 | #define _UI64_MAX ULONG_LONG_MAX | 
 
 
 
 
 | 111 |  | 
 
 
 
 
 | 112 | #endif /* Not Strict ANSI and GNU C compiler */ | 
 
 
 
 
 | 113 |  | 
 
 
 
 
 | 114 |  | 
 
 
 
 
 | 115 | #endif /* not _LIMITS_H_ */ |