changeset 39820:1f42ad97158b

strtoll, strtoull: Rely on limits-h module. * lib/strtol.c (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove macros. (ULLONG_MAX, LLONG_MAX, LLONG_MIN): Remove fallback definitions. * modules/strtoll (Depends-on): Add limits-h. * modules/strtoull (Depends-on): Likewise.
author Bruno Haible <bruno@clisp.org>
date Thu, 06 Sep 2018 14:41:00 +0200
parents 535331977e47
children 849fcaf40bbf
files ChangeLog lib/strtol.c modules/strtoll modules/strtoull
diffstat 4 files changed, 10 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Sep 06 14:35:29 2018 +0200
+++ b/ChangeLog	Thu Sep 06 14:41:00 2018 +0200
@@ -1,3 +1,11 @@
+2018-09-06  Bruno Haible  <bruno@clisp.org>
+
+	strtoll, strtoull: Rely on limits-h module.
+	* lib/strtol.c (TYPE_SIGNED, TYPE_MINIMUM, TYPE_MAXIMUM): Remove macros.
+	(ULLONG_MAX, LLONG_MAX, LLONG_MIN): Remove fallback definitions.
+	* modules/strtoll (Depends-on): Add limits-h.
+	* modules/strtoull (Depends-on): Likewise.
+
 2018-09-06  Bruno Haible  <bruno@clisp.org>
 
 	intprops tests: Fix compilation error with pre-C99 compiler.
--- a/lib/strtol.c	Thu Sep 06 14:35:29 2018 +0200
+++ b/lib/strtol.c	Thu Sep 06 14:41:00 2018 +0200
@@ -117,35 +117,6 @@
 # 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.  */
-
-/* True if the arithmetic type T is signed.  */
-# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
-
-/* Minimum and maximum values for integer types.
-   These macros have undefined behavior for signed types that either
-   have padding bits or do not use two's complement.  If this is a
-   problem for you, please let us know how to fix it for your host.  */
-
-/* The maximum and minimum values for the integer type T.  */
-# define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t))
-# define TYPE_MAXIMUM(t)                                                 \
-   ((t) (! TYPE_SIGNED (t)                                               \
-         ? (t) -1                                                        \
-         : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
-
-# ifndef ULLONG_MAX
-#  define ULLONG_MAX TYPE_MAXIMUM (unsigned long long)
-# endif
-# ifndef LLONG_MAX
-#  define LLONG_MAX TYPE_MAXIMUM (long long int)
-# endif
-# 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 = ULLONG_MAX;
--- a/modules/strtoll	Thu Sep 06 14:35:29 2018 +0200
+++ b/modules/strtoll	Thu Sep 06 14:41:00 2018 +0200
@@ -8,6 +8,7 @@
 m4/strtoll.m4
 
 Depends-on:
+limits-h
 stdlib
 
 configure.ac:
--- a/modules/strtoull	Thu Sep 06 14:35:29 2018 +0200
+++ b/modules/strtoull	Thu Sep 06 14:41:00 2018 +0200
@@ -9,6 +9,7 @@
 m4/strtoull.m4
 
 Depends-on:
+limits-h
 stdlib
 
 configure.ac: