Mercurial > hg > octave-kai > gnulib-hg
changeset 16834:9ea40aad6df8
stdint: be more consistent with glibc, SunOS libc
* lib/stdint.in.h (gl_int_fast8_t, gl_uint_fast8_t)
(gl_int_fast16_t, gl_uint_fast16_t)
(gl_int_fast32_t, gl_uint_fast32_t)
(INT_FAST8_MIN, INT_FAST8_MAX, UINT_FAST8_MAX)
(INT_FAST16_MIN, INT_FAST16_MAX, UINT_FAST16_MAX)
(INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX):
Be consistent with glibc by default, and with SunOS 5.10 and later
if __sun is defined. This lessens the likelihood of clashes if
code compiled for older hosts is combined with code compiled for
newer ones. Problem reported by Niels Möller in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00074.html>.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 07 May 2012 16:15:14 -0700 |
parents | b9610018ca94 |
children | a80277ccfb15 |
files | ChangeLog lib/stdint.in.h |
diffstat | 2 files changed, 48 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2012-05-07 Paul Eggert <eggert@cs.ucla.edu> + + stdint: be more consistent with glibc, SunOS libc + * lib/stdint.in.h (gl_int_fast8_t, gl_uint_fast8_t) + (gl_int_fast16_t, gl_uint_fast16_t) + (gl_int_fast32_t, gl_uint_fast32_t) + (INT_FAST8_MIN, INT_FAST8_MAX, UINT_FAST8_MAX) + (INT_FAST16_MIN, INT_FAST16_MAX, UINT_FAST16_MAX) + (INT_FAST32_MIN, INT_FAST32_MAX, UINT_FAST32_MAX): + Be consistent with glibc by default, and with SunOS 5.10 and later + if __sun is defined. This lessens the likelihood of clashes if + code compiled for older hosts is combined with code compiled for + newer ones. Problem reported by Niels Möller in + <http://lists.gnu.org/archive/html/bug-gnulib/2012-05/msg00074.html>. + 2012-05-07 Eric Blake <eblake@redhat.com> isatty: relax license to LGPLv2+
--- a/lib/stdint.in.h +++ b/lib/stdint.in.h @@ -90,7 +90,8 @@ # include <sys/types.h> #endif -/* Get LONG_MIN, LONG_MAX, ULONG_MAX. */ +/* Get SCHAR_MIN, SCHAR_MAX, UCHAR_MAX, INT_MIN, INT_MAX, + LONG_MIN, LONG_MAX, ULONG_MAX. */ #include <limits.h> #if @HAVE_INTTYPES_H@ @@ -246,8 +247,9 @@ /* Here we assume a standard architecture where the hardware integer types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types - are taken from the same list of types. Assume that 'long int' - is fast enough for all narrower integers. */ + are taken from the same list of types. The following code normally + uses types consistent with glibc, as that lessens the chance of + incompatibility with older GNU hosts. */ #undef int_fast8_t #undef uint_fast8_t @@ -257,12 +259,21 @@ #undef uint_fast32_t #undef int_fast64_t #undef uint_fast64_t -typedef long int gl_int_fast8_t; -typedef unsigned long int gl_uint_fast8_t; -typedef long int gl_int_fast16_t; -typedef unsigned long int gl_uint_fast16_t; +typedef signed char gl_int_fast8_t; +typedef unsigned char gl_uint_fast8_t; + +#ifdef __sun +/* Define types compatible with SunOS 5.10, so that code compiled under + earlier SunOS versions works with code compiled under SunOS 5.10. */ +typedef int gl_int_fast32_t; +typedef unsigned int gl_uint_fast32_t; +#else typedef long int gl_int_fast32_t; typedef unsigned long int gl_uint_fast32_t; +#endif +typedef gl_int_fast32_t gl_int_fast16_t; +typedef gl_uint_fast32_t gl_uint_fast16_t; + #define int_fast8_t gl_int_fast8_t #define uint_fast8_t gl_uint_fast8_t #define int_fast16_t gl_int_fast16_t @@ -418,23 +429,29 @@ #undef INT_FAST8_MIN #undef INT_FAST8_MAX #undef UINT_FAST8_MAX -#define INT_FAST8_MIN LONG_MIN -#define INT_FAST8_MAX LONG_MAX -#define UINT_FAST8_MAX ULONG_MAX +#define INT_FAST8_MIN SCHAR_MIN +#define INT_FAST8_MAX SCHAR_MAX +#define UINT_FAST8_MAX UCHAR_MAX #undef INT_FAST16_MIN #undef INT_FAST16_MAX #undef UINT_FAST16_MAX -#define INT_FAST16_MIN LONG_MIN -#define INT_FAST16_MAX LONG_MAX -#define UINT_FAST16_MAX ULONG_MAX +#define INT_FAST16_MIN INT_FAST32_MIN +#define INT_FAST16_MAX INT_FAST32_MAX +#define UINT_FAST16_MAX UINT_FAST32_MAX #undef INT_FAST32_MIN #undef INT_FAST32_MAX #undef UINT_FAST32_MAX -#define INT_FAST32_MIN LONG_MIN -#define INT_FAST32_MAX LONG_MAX -#define UINT_FAST32_MAX ULONG_MAX +#ifdef __sun +# define INT_FAST32_MIN INT_MIN +# define INT_FAST32_MAX INT_MAX +# define UINT_FAST32_MAX UINT_MAX +#else +# define INT_FAST32_MIN LONG_MIN +# define INT_FAST32_MAX LONG_MAX +# define UINT_FAST32_MAX ULONG_MAX +#endif #undef INT_FAST64_MIN #undef INT_FAST64_MAX