Mercurial > gnulib
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;