summaryrefslogtreecommitdiff
path: root/lib/xstrtoumax.c
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1999-04-21 04:28:36 +0000
committerJim Meyering <jim@meyering.net>1999-04-21 04:28:36 +0000
commit890797627031d6acb54345a3794fbf6471f82af4 (patch)
treeea8981d0a7a77c562ffb9fdf60bf57ec51f9a7d6 /lib/xstrtoumax.c
parent3354e7502c4cf64791cf3a901b5d99f6aaf90c58 (diff)
downloadcoreutils-890797627031d6acb54345a3794fbf6471f82af4.tar.xz
Remove the temporary strtoumax replacement;
we now have a true replacement in strtoumax.c. (__strtol): Always define to strtoumax. (<stdlib.h>): No need to include. (PARAMS): Remove. (my_strtoumax): Move this to strtoumax.c, rename it to strtoumax, and simplify.
Diffstat (limited to 'lib/xstrtoumax.c')
-rw-r--r--lib/xstrtoumax.c74
1 files changed, 3 insertions, 71 deletions
diff --git a/lib/xstrtoumax.c b/lib/xstrtoumax.c
index 9ef799b34..04d7cf98a 100644
--- a/lib/xstrtoumax.c
+++ b/lib/xstrtoumax.c
@@ -21,79 +21,11 @@
# include <config.h>
#endif
-#if HAVE_STRTOUMAX
-# define __strtol strtoumax
-#else
-# define __strtol my_strtoumax
-
- /* Define a temporary implementation, intended to hold the fort only
- until glibc has an implementation of the C9x standard function
- strtoumax. When glibc implements strtoumax, we can remove the
- following function in favor of a replacement file strtoumax.c taken
- from glibc. */
-
-# if HAVE_INTTYPES_H
-# include <inttypes.h>
-# endif
-
-# if HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
-
-# ifndef PARAMS
-# if defined PROTOTYPES || defined __STDC__
-# define PARAMS(Args) Args
-# else
-# define PARAMS(Args) ()
-# endif
-# endif
-
-static uintmax_t my_strtoumax PARAMS ((char const *, char **, int));
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
#endif
+#define __strtol strtoumax
#define __strtol_t uintmax_t
#define __xstrtol xstrtoumax
#include "xstrtol.c"
-
-#if !HAVE_STRTOUMAX
-
-static uintmax_t
-my_strtoumax (char const *ptr, char **endptr, int base)
-{
-# define USE_IF_EQUIVALENT(function) \
- if (sizeof (uintmax_t) == sizeof function (ptr, endptr, base)) \
- return function (ptr, endptr, base);
-
- USE_IF_EQUIVALENT (strtoul)
-
-# if HAVE_STRTOULL
- USE_IF_EQUIVALENT (strtoull)
-# endif
-
-# if HAVE_STRTOUQ
- USE_IF_EQUIVALENT (strtouq)
-# endif
-
- {
- /* An implementation with uintmax_t longer than long, but with no
- known way to convert it. Do it by hand. Assume base 10. */
- uintmax_t n = 0;
- uintmax_t overflow = 0;
- for (; '0' <= *ptr && *ptr <= '9'; ptr++)
- {
- uintmax_t n10 = n * 10;
- int digit = *ptr - '0';
- overflow |= n ^ (n10 + digit) / 10;
- n = n10 + digit;
- }
- if (endptr)
- *endptr = (char *) ptr;
- if (overflow)
- {
- errno = ERANGE;
- n = (uintmax_t) -1;
- }
- return n;
- }
-}
-#endif /* HAVE_STRTOUMAX */