diff options
author | Jim Meyering <jim@meyering.net> | 1998-09-26 19:11:23 +0000 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 1998-09-26 19:11:23 +0000 |
commit | 72f8c0a17cfce2339403a7d93abe2a317a0a6fd6 (patch) | |
tree | 4621e874fc5b03f0406cd5bed9f9421b600b759d | |
parent | d679ddd8399029d526a318c84baaacfc3be76e11 (diff) | |
download | coreutils-72f8c0a17cfce2339403a7d93abe2a317a0a6fd6.tar.xz |
(__xstrtol) [STRING_TO_UNSIGNED]: Return
LONGINT_INVALID for strings that begin with `-'.
-rw-r--r-- | lib/xstrtol.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/xstrtol.c b/lib/xstrtol.c index 00d4b117b..f4ba50ba2 100644 --- a/lib/xstrtol.c +++ b/lib/xstrtol.c @@ -69,6 +69,18 @@ extern int errno; # define LONG_MAX TYPE_MAXIMUM (long int) #endif +#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) +# define IN_CTYPE_DOMAIN(c) 1 +#else +# define IN_CTYPE_DOMAIN(c) isascii(c) +#endif + +#ifdef isblank +# define ISBLANK(c) (IN_CTYPE_DOMAIN (c) && isblank (c)) +#else +# define ISBLANK(c) ((c) == ' ' || (c) == '\t') +#endif + #include "xstrtol.h" __unsigned long int __strtol (); @@ -107,6 +119,18 @@ __xstrtol (const char *s, char **ptr, int strtol_base, p = (ptr ? ptr : &t_ptr); +#if STRING_TO_UNSIGNED + { + const char *q = s; + while (ISBLANK (*q)) + { + ++q; + } + if (*q == '-') + return LONGINT_INVALID; + } +#endif + errno = 0; tmp = __strtol (s, p, strtol_base); if (errno != 0) |