-/* Copyright (C) 2006-2007 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2011 Free Software Foundation, Inc.
Written by Paul Eggert, Bruno Haible, Derek Price.
This file is part of gnulib.
- This program is free software; you can redistribute it and/or modify
+ This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
/*
* ISO C 99 <inttypes.h> for platforms that lack it.
* <http://www.opengroup.org/susv3xbd/inttypes.h.html>
*/
+#if __GNUC__ >= 3
+@PRAGMA_SYSTEM_HEADER@
+#endif
+@PRAGMA_COLUMNS@
+
/* Include the original <inttypes.h> if it exists, and if this file
has not been included yet or if this file includes gnulib stdint.h
which in turn includes this file.
#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
#define INTTYPES_H
-/* Include <stdint.h> or the gnulib replacement. */
-#include <stdint.h>
+/* Include <stdint.h> or the gnulib replacement.
+ But avoid namespace pollution on glibc systems. */
+#ifndef __GLIBC__
+# include <stdint.h>
+#endif
/* Get CHAR_BIT. */
#include <limits.h>
# error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
#endif
-/* The definition of GL_LINK_WARNING is copied here. */
+/* The definition of _GL_ARG_NONNULL is copied here. */
+
+/* The definition of _GL_WARN_ON_USE is copied here. */
/* 7.8.1 Macros for format specifiers */
# endif
# endif
# ifdef INT64_MAX
-# if INT64_MAX == LONG_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
# define _PRI64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRI64_PREFIX "I64"
# endif
# endif
# ifdef UINT64_MAX
-# if UINT64_MAX == ULONG_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
# define _PRIu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _PRIu64_PREFIX "I64"
# if !defined PRIdMAX || @PRI_MACROS_BROKEN@
# undef PRIdMAX
-# if INTMAX_MAX > INT32_MAX
+# if @INT32_MAX_LT_INTMAX_MAX@
# define PRIdMAX PRId64
# else
# define PRIdMAX "ld"
# endif
# if !defined PRIiMAX || @PRI_MACROS_BROKEN@
# undef PRIiMAX
-# if INTMAX_MAX > INT32_MAX
+# if @INT32_MAX_LT_INTMAX_MAX@
# define PRIiMAX PRIi64
# else
# define PRIiMAX "li"
# endif
# if !defined PRIoMAX || @PRI_MACROS_BROKEN@
# undef PRIoMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define PRIoMAX PRIo64
# else
# define PRIoMAX "lo"
# endif
# if !defined PRIuMAX || @PRI_MACROS_BROKEN@
# undef PRIuMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define PRIuMAX PRIu64
# else
# define PRIuMAX "lu"
# endif
# if !defined PRIxMAX || @PRI_MACROS_BROKEN@
# undef PRIxMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define PRIxMAX PRIx64
# else
# define PRIxMAX "lx"
# endif
# if !defined PRIXMAX || @PRI_MACROS_BROKEN@
# undef PRIXMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define PRIXMAX PRIX64
# else
# define PRIXMAX "lX"
# endif
# endif
# ifdef INT64_MAX
-# if INT64_MAX == LONG_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @INT64_MAX_EQ_LONG_MAX@)
# define _SCN64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCN64_PREFIX "I64"
# endif
# endif
# ifdef UINT64_MAX
-# if UINT64_MAX == ULONG_MAX
+# if (@APPLE_UNIVERSAL_BUILD@ ? defined _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
# define _SCNu64_PREFIX "l"
# elif defined _MSC_VER || defined __MINGW32__
# define _SCNu64_PREFIX "I64"
# if !defined SCNdMAX || @PRI_MACROS_BROKEN@
# undef SCNdMAX
-# if INTMAX_MAX > INT32_MAX
+# if @INT32_MAX_LT_INTMAX_MAX@
# define SCNdMAX SCNd64
# else
# define SCNdMAX "ld"
# endif
# if !defined SCNiMAX || @PRI_MACROS_BROKEN@
# undef SCNiMAX
-# if INTMAX_MAX > INT32_MAX
+# if @INT32_MAX_LT_INTMAX_MAX@
# define SCNiMAX SCNi64
# else
# define SCNiMAX "li"
# endif
# if !defined SCNoMAX || @PRI_MACROS_BROKEN@
# undef SCNoMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define SCNoMAX SCNo64
# else
# define SCNoMAX "lo"
# endif
# if !defined SCNuMAX || @PRI_MACROS_BROKEN@
# undef SCNuMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define SCNuMAX SCNu64
# else
# define SCNuMAX "lu"
# endif
# if !defined SCNxMAX || @PRI_MACROS_BROKEN@
# undef SCNxMAX
-# if UINTMAX_MAX > UINT32_MAX
+# if @UINT32_MAX_LT_UINTMAX_MAX@
# define SCNxMAX SCNx64
# else
# define SCNxMAX "lx"
# endif
#elif defined GNULIB_POSIXCHECK
# undef imaxabs
-# define imaxabs(a) \
- (GL_LINK_WARNING ("imaxabs is unportable - " \
- "use gnulib module imaxabs for portability"), \
- imaxabs (a))
+# if HAVE_RAW_DECL_IMAXABS
+_GL_WARN_ON_USE (imaxabs, "imaxabs is unportable - "
+ "use gnulib module imaxabs for portability");
+# endif
#endif
#if @GNULIB_IMAXDIV@
# if !@HAVE_DECL_IMAXDIV@
+# if !GNULIB_defined_imaxdiv_t
typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
+# define GNULIB_defined_imaxdiv_t 1
+# endif
extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
# endif
#elif defined GNULIB_POSIXCHECK
# undef imaxdiv
-# define imaxdiv(a,b) \
- (GL_LINK_WARNING ("imaxdiv is unportable - " \
- "use gnulib module imaxdiv for portability"), \
- imaxdiv (a, b))
+# if HAVE_RAW_DECL_IMAXDIV
+_GL_WARN_ON_USE (imaxdiv, "imaxdiv is unportable - "
+ "use gnulib module imaxdiv for portability");
+# endif
#endif
#if @GNULIB_STRTOIMAX@
# if !@HAVE_DECL_STRTOIMAX@
-extern intmax_t strtoimax (const char *, char **, int);
+# undef strtoimax
+extern intmax_t strtoimax (const char *, char **, int) _GL_ARG_NONNULL ((1));
# endif
#elif defined GNULIB_POSIXCHECK
# undef strtoimax
-# define strtoimax(p,e,b) \
- (GL_LINK_WARNING ("strtoimax is unportable - " \
- "use gnulib module strtoimax for portability"), \
- strtoimax (p, e, b))
+# if HAVE_RAW_DECL_STRTOIMAX
+_GL_WARN_ON_USE (strtoimax, "strtoimax is unportable - "
+ "use gnulib module strtoimax for portability");
+# endif
#endif
#if @GNULIB_STRTOUMAX@
# if !@HAVE_DECL_STRTOUMAX@
-extern uintmax_t strtoumax (const char *, char **, int);
+# undef strtoumax
+extern uintmax_t strtoumax (const char *, char **, int) _GL_ARG_NONNULL ((1));
# endif
#elif defined GNULIB_POSIXCHECK
# undef strtoumax
-# define strtoumax(p,e,b) \
- (GL_LINK_WARNING ("strtoumax is unportable - " \
- "use gnulib module strtoumax for portability"), \
- strtoumax (p, e, b))
+# if HAVE_RAW_DECL_STRTOUMAX
+_GL_WARN_ON_USE (strtoumax, "strtoumax is unportable - "
+ "use gnulib module strtoumax for portability");
+# endif
#endif
/* Don't bother defining or declaring wcstoimax and wcstoumax, since