bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: LONG_LONG_MIN


From: Bruno Haible
Subject: Re: LONG_LONG_MIN
Date: Sun, 14 Mar 2010 19:26:05 +0100
User-agent: KMail/1.9.9

Jim Meyering wrote:
> Which macros from <stdint.h> would be better?

I was thinking of INT64_MIN, INT64_MAX, UINT64_MAX. But using these would
assume that 'long long' has 64 bits, which is not future-proof...

> Using LLONG_MIN etc. sounds fine.

OK, I'm using this. If on some platforms, LLONG_MIN is undefined, it
will get reported, and we'll find some replacement. (Remember that
LONG_LONG_MIN as a fallback is only available with GCC, AFAICS.)


2010-03-14  Bruno Haible  <address@hidden>

        Fix compilation error with Sun C.
        * lib/strtol.c: Use LLONG_MIN instead of GCC specific LONG_LONG_MIN.
        Use LLONG_MAX instead of GCC specific LONG_LONG_MAX. Use ULLONG_MAX
        instead of GCC specific ULONG_LONG_MAX.
        * lib/xstrtoll.c: Likewise.
        * lib/xstrtoull.c: Likewise.

--- lib/strtol.c.orig   Sun Mar 14 19:20:28 2010
+++ lib/strtol.c        Sun Mar 14 17:15:07 2010
@@ -114,9 +114,9 @@
    operating on `long long int's.  */
 #ifdef QUAD
 # define LONG long long
-# define STRTOL_LONG_MIN LONG_LONG_MIN
-# define STRTOL_LONG_MAX LONG_LONG_MAX
-# define STRTOL_ULONG_MAX ULONG_LONG_MAX
+# define STRTOL_LONG_MIN LLONG_MIN
+# define STRTOL_LONG_MAX LLONG_MAX
+# define STRTOL_ULONG_MAX ULLONG_MAX
 
 /* The extra casts in the following macros work around compiler bugs,
    e.g., in Cray C 5.0.3.0.  */
@@ -147,19 +147,19 @@
          ? (t) -1 \
          : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
 
-# ifndef ULONG_LONG_MAX
-#  define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long)
+# ifndef ULLONG_MAX
+#  define ULLONG_MAX TYPE_MAXIMUM (unsigned long long)
 # endif
-# ifndef LONG_LONG_MAX
-#  define LONG_LONG_MAX TYPE_MAXIMUM (long long int)
+# ifndef LLONG_MAX
+#  define LLONG_MAX TYPE_MAXIMUM (long long int)
 # endif
-# ifndef LONG_LONG_MIN
-#  define LONG_LONG_MIN TYPE_MINIMUM (long long int)
+# ifndef LLONG_MIN
+#  define LLONG_MIN TYPE_MINIMUM (long long int)
 # endif
 
 # if __GNUC__ == 2 && __GNUC_MINOR__ < 7
    /* Work around gcc bug with using this constant.  */
-   static const unsigned long long int maxquad = ULONG_LONG_MAX;
+   static const unsigned long long int maxquad = ULLONG_MAX;
 #  undef STRTOL_ULONG_MAX
 #  define STRTOL_ULONG_MAX maxquad
 # endif
--- lib/xstrtoll.c.orig Sun Mar 14 19:20:28 2010
+++ lib/xstrtoll.c      Sun Mar 14 17:15:08 2010
@@ -1,6 +1,6 @@
 #define __strtol strtoll
 #define __strtol_t long long int
 #define __xstrtol xstrtoll
-#define STRTOL_T_MINIMUM LONG_LONG_MIN
-#define STRTOL_T_MAXIMUM LONG_LONG_MAX
+#define STRTOL_T_MINIMUM LLONG_MIN
+#define STRTOL_T_MAXIMUM LLONG_MAX
 #include "xstrtol.c"
--- lib/xstrtoull.c.orig        Sun Mar 14 19:20:28 2010
+++ lib/xstrtoull.c     Sun Mar 14 17:15:08 2010
@@ -2,5 +2,5 @@
 #define __strtol_t unsigned long long int
 #define __xstrtol xstrtoull
 #define STRTOL_T_MINIMUM 0
-#define STRTOL_T_MAXIMUM ULONG_LONG_MAX
+#define STRTOL_T_MAXIMUM ULLONG_MAX
 #include "xstrtol.c"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]