diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-07-06 19:22:49 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-07-06 19:22:49 +0000 |
commit | ffb96c090015f49059d146deefbbd7e1f6baa642 (patch) | |
tree | 53229e8793e289f18a7453b144850b6583078c32 /include/limits.h | |
parent | afb85e9d6ca1de8f1ecb267e8c30b88ba4382820 (diff) |
Some more major updates to further superate ucLibc from the kernel
headers (the way it has been done in GNU libc).
-Erik
Diffstat (limited to 'include/limits.h')
-rw-r--r-- | include/limits.h | 171 |
1 files changed, 84 insertions, 87 deletions
diff --git a/include/limits.h b/include/limits.h index e03e558fd..21520f3c9 100644 --- a/include/limits.h +++ b/include/limits.h @@ -1,54 +1,59 @@ -/* Copyright (C) 1991, 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. +/* Copyright (C) 1991, 1992, 1996, 1997, 1998 Free Software Foundation, Inc. + This file is part of the GNU C Library. -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with the GNU C Library; see the file COPYING.LIB. If -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ /* - * ANSI Standard: 4.14/2.2.4.2 Limits of integral types <limits.h> + * ISO C Standard: 4.14/2.2.4.2 Limits of integral types <limits.h> */ -#ifndef _LIMITS_H +#ifndef _LIBC_LIMITS_H_ +#define _LIBC_LIMITS_H_ 1 -#define _LIMITS_H 1 #include <features.h> #ifdef __USE_POSIX /* POSIX adds things to <limits.h>. */ -#include <posix1_lim.h> +# include <bits/posix1_lim.h> #endif #ifdef __USE_POSIX2 -#include <posix2_lim.h> +# include <bits/posix2_lim.h> #endif +#ifdef __USE_XOPEN +# include <bits/xopen_lim.h> +#endif + + +/* Maximum length of any multibyte character in any locale. + We define this value here since the gcc header does not define + the correct value. */ +#define MB_LEN_MAX 6 -/* Only if gcc 2.x is used and -traditional is not used, we can use - * #include_next. -#if __GNUC__ >= 2 && __STDC__ - */ -#if __GNUC__ >= 2 && !defined(_GCC_LIMITS_H_) && !defined(_GCC_LIMITS_H) - /* Get the compiler's limits.h, which defines all the ANSI - * constants. - */ - /* This tells it not to look for another. */ -# define _LIBC_LIMITS_H -# define _LIBC_LIMITS_H_ -# include_next <limits.h> -#else /* Not GCC 2. */ +/* If we are not using GNU CC we have to define all the symbols ourself. + Otherwise use gcc's definitions (see below). */ +#if !defined __GNUC__ || __GNUC__ < 2 + +/* We only protect from multiple inclusion here, because all the other + #include's protect themselves, and in GCC 2 we may #include_next through + multiple copies of this file before we get to GCC's. */ +# ifndef _LIMITS_H +# define _LIMITS_H 1 /* We don't have #include_next. Define ANSI <limits.h> for standard 32-bit words. */ @@ -57,80 +62,72 @@ Cambridge, MA 02139, USA. */ and 32-bit `int's and `long int's. */ /* Number of bits in a `char'. */ -#define CHAR_BIT 8 - -/* Maximum length of any multibyte character in any locale. - Locale-writers should change this as necessary. */ -#define MB_LEN_MAX 1 +# define CHAR_BIT 8 /* Minimum and maximum values a `signed char' can hold. */ -#define SCHAR_MIN (-128) -#define SCHAR_MAX 127 +# define SCHAR_MIN (-128) +# define SCHAR_MAX 127 /* Maximum value an `unsigned char' can hold. (Minimum is 0.) */ -#ifdef __STDC__ -#define UCHAR_MAX 255U -#else -#define UCHAR_MAX 255 -#endif +# define UCHAR_MAX 255 /* Minimum and maximum values a `char' can hold. */ -#ifdef __CHAR_UNSIGNED__ -#define CHAR_MIN 0 -#define CHAR_MAX UCHAR_MAX -#else -#define CHAR_MIN SCHAR_MIN -#define CHAR_MAX SCHAR_MAX -#endif +# ifdef __CHAR_UNSIGNED__ +# define CHAR_MIN 0 +# define CHAR_MAX UCHAR_MAX +# else +# define CHAR_MIN SCHAR_MIN +# define CHAR_MAX SCHAR_MAX +# endif /* Minimum and maximum values a `signed short int' can hold. */ -#define SHRT_MIN (-32768) -#define SHRT_MAX 32767 +# define SHRT_MIN (-32768) +# define SHRT_MAX 32767 /* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */ -#define USHRT_MAX 65535 +# define USHRT_MAX 65535 /* Minimum and maximum values a `signed int' can hold. */ -#define INT_MIN (- INT_MAX - 1) -#define INT_MAX 2147483647 +# define INT_MIN (-INT_MAX - 1) +# define INT_MAX 2147483647 /* Maximum value an `unsigned int' can hold. (Minimum is 0.) */ -#ifdef __STDC__ -#define UINT_MAX 4294967295U -#else -#define UINT_MAX 4294967295 -#endif +# ifdef __STDC__ +# define UINT_MAX 4294967295U +# else +# define UINT_MAX 4294967295 +# endif /* Minimum and maximum values a `signed long int' can hold. */ -#define LONG_MIN INT_MIN -#define LONG_MAX INT_MAX +# ifdef __alpha__ +# define LONG_MAX 9223372036854775807L +# else +# define LONG_MAX 2147483647L +# endif +# define LONG_MIN (-LONG_MAX - 1L) /* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */ -#define ULONG_MAX UINT_MAX - +# ifdef __alpha__ +# define ULONG_MAX 18446744073709551615UL +# else +# ifdef __STDC__ +# define ULONG_MAX 4294967295UL +# else +# define ULONG_MAX 4294967295L +# endif +# endif + +# endif /* limits.h */ #endif /* GCC 2. */ +#endif /* !_LIBC_LIMITS_H_ */ -#ifndef RAND_MAX -/* The largest number rand will return (same as INT_MAX). */ -#define RAND_MAX INT_MAX -#endif - -#ifdef __SVR4_I386_ABI_L1__ - -#define NL_ARGMAX 9 -#define NL_LANGMAX 14 -#define NL_MSGMAX 32767 -#define NL_NMAX 1 -#define NL_SETMAX 255 -#define NL_TEXTMAX 255 -#define NZERO 20 + /* Get the compiler's limits.h, which defines almost all the ISO constants. -#define WORD_BIT 32 -#define LONG_BIT 32 - -#define FCHR_MAX 1048576 - -#endif /* __SVR4_I386_ABI_L1__ */ - -#endif /* limits.h */ + We put this #include_next outside the double inclusion check because + it should be possible to include this file more than once and still get + the definitions from gcc's header. */ +#if defined __GNUC__ && !defined _GCC_LIMITS_H_ +/* `_GCC_LIMITS_H_' is what GCC's file defines. */ +# include_next <limits.h> +#endif |