diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2006-07-05 23:35:19 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2006-07-05 23:35:19 +0000 |
commit | 4fde4952d5a3db51a122f96a31bfcd6879399fea (patch) | |
tree | 96f8f5e436f51ebf978bc613bab31e6be7238631 /lib | |
parent | 75dbe3666dfbb5e83dfc0647620292f905e74b36 (diff) | |
download | gnulib-4fde4952d5a3db51a122f96a31bfcd6879399fea.tar.gz |
* lib/memcasecmp.c: Include <limits.h>.
(memcasecmp): Don't assume UCHAR_MAX <= INT_MAX.
* lib/strtod.c (strtod): Don't assume isspace works on negative chars.
Don't assume isdigit succeeds only on '0' through '9'.
* lib/exclude.c (IN_CTYPE_DOMAIN, is_space): Remove; no longer needed.
All uses of is_space replaced by isspace.
* lib/fnmatch.c (ISASCII): Remove; no longer needed. All uses removed.
(ISPRINT, ISDIGIT, ISALNUM, ISALPHA, ISCNTRL, ISLOWER, ISPUNCT):
(ISSPACE, ISUPPER, ISXDIGIT): Remove; no longer needed. All uses
replaced by isprint etc.
* lib/getdate.y (IN_CTYPE_DOMAIN, ISSPACE, ISALPHA, ISLOWER): Likewise.
* lib/getusershell.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
* lib/memcasecmp.c (IN_CTYPE_DOMAIN, ISLOWER, TOUPPER): Likewise.
* lib/strtod.c (IN_CTYPE_DOMAIN, ISSPACE, ISDIGIT, TOLOWER): Likewise.
* lib/strtol.c (IN_CTYPE_DOMAIN): Likewise.
* lib/xstrtol.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise.
* m4/xstrtol.m4 (gl_PREREQ_XSTRTOL): Use AC_CHECK_DECLS_ONCE
rather than AC_CHECK_DECLS for strtoimax and strtoumax.
* m4/getusershell.m4 (gl_PREREQ_GETUSERSHELL): Remove; no longer needed.
All uses removed.
* m4/strtol.m4 (gl_PREREQ_STRTOL): Likewise.
* m4/strtoul.m4 (gl_PREREQ_STRTOUL): Likewise.
* m4/exclude.m4 (gl_EXCLUDE): Don't check for isascii; no longer needed.
* m4/getdate.m4 (gl_GETDATE): Likewise.
* m4/getusershell.m4 (gl_PREREQ_GETUSERSHELL): Likewise.
* m4/memcasecmp.m4 (gl_MEMCASECMP): Likewise.
* m4/strtod.m4 (gl_FUNC_STRTOD): Likewise.
* m4/strtol.m4 (gl_PREREQ_STRTOL): Likewise.
* m4/strtoul.m4 (gl_PREREQ_STRTOUL): Likewise.
* m4/xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
* m4/exclude.m4 (gl_EXCLUDE): Don't require AC_C_INLINE; no longer
needed.
* m4/calloc.m4 (_AC_FUNC_CALLOC_IF): Don't require AC_HEADER_STDC;
no longer needed.
* m4/exclude.m4 (gl_EXCLUDE): Likewise.
* m4/getdate.m4 (gl_GETDATE): Likewise.
* m4/getusershell.m4 (gl_PREREQ_GETUSERSHELL): Likewise.
* m4/memcasecmp.m4 (gl_MEMCASECMP): Likewise.
* m4/strtod.m4 (gl_FUNC_STRTOD): Likewise.
* m4/strtol.m4 (gl_PREREQ_STRTOL): Likewise.
* m4/xstrtol.m4 (gl_PREREQ_XSTRTOL): Likewise.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ChangeLog | 22 | ||||
-rw-r--r-- | lib/exclude.c | 16 | ||||
-rw-r--r-- | lib/fnmatch.c | 23 | ||||
-rw-r--r-- | lib/fnmatch_loop.c | 20 | ||||
-rw-r--r-- | lib/getdate.y | 21 | ||||
-rw-r--r-- | lib/getusershell.c | 16 | ||||
-rw-r--r-- | lib/memcasecmp.c | 25 | ||||
-rw-r--r-- | lib/strtod.c | 16 | ||||
-rw-r--r-- | lib/strtol.c | 11 | ||||
-rw-r--r-- | lib/xstrtol.c | 12 |
10 files changed, 63 insertions, 119 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog index 36ee58bb7c..2e132d507f 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,25 @@ +2006-07-05 Paul Eggert <eggert@cs.ucla.edu> + + * memcasecmp.c: Include <limits.h>. + (memcasecmp): Don't assume UCHAR_MAX <= INT_MAX. + * strtod.c (strtod): Don't assume isspace works on negative chars. + Don't assume isdigit succeeds only on '0' through '9'. + +2006-07-05 Derek R. Price <derek@ximbiot.com> + + * exclude.c (IN_CTYPE_DOMAIN, is_space): Remove; no longer needed. + All uses of is_space replaced by isspace. + * fnmatch.c (ISASCII): Remove; no longer needed. All uses removed. + (ISPRINT, ISDIGIT, ISALNUM, ISALPHA, ISCNTRL, ISLOWER, ISPUNCT): + (ISSPACE, ISUPPER, ISXDIGIT): Remove; no longer needed. All uses + replaced by isprint etc. + * getdate.y (IN_CTYPE_DOMAIN, ISSPACE, ISALPHA, ISLOWER): Likewise. + * getusershell.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise. + * memcasecmp.c (IN_CTYPE_DOMAIN, ISLOWER, TOUPPER): Likewise. + * strtod.c (IN_CTYPE_DOMAIN, ISSPACE, ISDIGIT, TOLOWER): Likewise. + * strtol.c (IN_CTYPE_DOMAIN): Likewise. + * xstrtol.c (IN_CTYPE_DOMAIN, ISSPACE): Likewise. + 2006-07-05 Eric Blake <ebb9@byu.net> * getaddrinfo.h (NI_NUMERICHOST, NI_NUMERICSERV): Define if diff --git a/lib/exclude.c b/lib/exclude.c index 6bd7339f45..f5978a966e 100644 --- a/lib/exclude.c +++ b/lib/exclude.c @@ -43,18 +43,6 @@ # include "unlocked-io.h" #endif -#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) true -#else -# define IN_CTYPE_DOMAIN(c) isascii (c) -#endif - -static inline bool -is_space (unsigned char c) -{ - return IN_CTYPE_DOMAIN (c) && isspace (c); -} - /* Non-GNU systems lack these options, so we don't need to check them. */ #ifndef FNM_CASEFOLD # define FNM_CASEFOLD 0 @@ -244,12 +232,12 @@ add_exclude_file (void (*add_func) (struct exclude *, char const *, int), { char *pattern_end = p; - if (is_space (line_end)) + if (isspace ((unsigned char) line_end)) { for (; ; pattern_end--) if (pattern_end == pattern) goto next_pattern; - else if (! is_space (pattern_end[-1])) + else if (! isspace ((unsigned char) pattern_end[-1])) break; } diff --git a/lib/fnmatch.c b/lib/fnmatch.c index c5a4e40713..4fc19b4fe0 100644 --- a/lib/fnmatch.c +++ b/lib/fnmatch.c @@ -86,34 +86,17 @@ extern int fnmatch (const char *pattern, const char *string, int flags); #if defined _LIBC || !defined __GNU_LIBRARY__ || !HAVE_FNMATCH_GNU -# if defined STDC_HEADERS || !defined isascii -# define ISASCII(c) 1 -# else -# define ISASCII(c) isascii(c) -# endif - # ifdef isblank -# define ISBLANK(c) (ISASCII (c) && isblank (c)) +# define ISBLANK(c) isblank (c) # else # define ISBLANK(c) ((c) == ' ' || (c) == '\t') # endif # ifdef isgraph -# define ISGRAPH(c) (ISASCII (c) && isgraph (c)) +# define ISGRAPH(c) isgraph (c) # else -# define ISGRAPH(c) (ISASCII (c) && isprint (c) && !isspace (c)) +# define ISGRAPH(c) (isprint (c) && !isspace (c)) # endif -# define ISPRINT(c) (ISASCII (c) && isprint (c)) -# define ISDIGIT(c) (ISASCII (c) && isdigit (c)) -# define ISALNUM(c) (ISASCII (c) && isalnum (c)) -# define ISALPHA(c) (ISASCII (c) && isalpha (c)) -# define ISCNTRL(c) (ISASCII (c) && iscntrl (c)) -# define ISLOWER(c) (ISASCII (c) && islower (c)) -# define ISPUNCT(c) (ISASCII (c) && ispunct (c)) -# define ISSPACE(c) (ISASCII (c) && isspace (c)) -# define ISUPPER(c) (ISASCII (c) && isupper (c)) -# define ISXDIGIT(c) (ISASCII (c) && isxdigit (c)) - # define STREQ(s1, s2) ((strcmp (s1, s2) == 0)) # if defined _LIBC || WIDE_CHAR_SUPPORT diff --git a/lib/fnmatch_loop.c b/lib/fnmatch_loop.c index 2b5897c44b..d86899b6db 100644 --- a/lib/fnmatch_loop.c +++ b/lib/fnmatch_loop.c @@ -288,18 +288,18 @@ FCT (const CHAR *pattern, const CHAR *string, const CHAR *string_end, goto matched; # endif #else - if ((STREQ (str, L_("alnum")) && ISALNUM ((UCHAR) *n)) - || (STREQ (str, L_("alpha")) && ISALPHA ((UCHAR) *n)) + if ((STREQ (str, L_("alnum")) && isalnum ((UCHAR) *n)) + || (STREQ (str, L_("alpha")) && isalpha ((UCHAR) *n)) || (STREQ (str, L_("blank")) && ISBLANK ((UCHAR) *n)) - || (STREQ (str, L_("cntrl")) && ISCNTRL ((UCHAR) *n)) - || (STREQ (str, L_("digit")) && ISDIGIT ((UCHAR) *n)) + || (STREQ (str, L_("cntrl")) && iscntrl ((UCHAR) *n)) + || (STREQ (str, L_("digit")) && isdigit ((UCHAR) *n)) || (STREQ (str, L_("graph")) && ISGRAPH ((UCHAR) *n)) - || (STREQ (str, L_("lower")) && ISLOWER ((UCHAR) *n)) - || (STREQ (str, L_("print")) && ISPRINT ((UCHAR) *n)) - || (STREQ (str, L_("punct")) && ISPUNCT ((UCHAR) *n)) - || (STREQ (str, L_("space")) && ISSPACE ((UCHAR) *n)) - || (STREQ (str, L_("upper")) && ISUPPER ((UCHAR) *n)) - || (STREQ (str, L_("xdigit")) && ISXDIGIT ((UCHAR) *n))) + || (STREQ (str, L_("lower")) && islower ((UCHAR) *n)) + || (STREQ (str, L_("print")) && isprint ((UCHAR) *n)) + || (STREQ (str, L_("punct")) && ispunct ((UCHAR) *n)) + || (STREQ (str, L_("space")) && isspace ((UCHAR) *n)) + || (STREQ (str, L_("upper")) && isupper ((UCHAR) *n)) + || (STREQ (str, L_("xdigit")) && isxdigit ((UCHAR) *n))) goto matched; #endif c = *p++; diff --git a/lib/getdate.y b/lib/getdate.y index 0185048251..534e2681ef 100644 --- a/lib/getdate.y +++ b/lib/getdate.y @@ -68,15 +68,6 @@ #include "setenv.h" #include "xalloc.h" -#if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii (c) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -#define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) -#define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) /* ISDIGIT differs from isdigit, as follows: - Its arg may be any int or unsigned int; it need not be an unsigned char. @@ -896,7 +887,7 @@ lookup_word (parser_control const *pc, char *word) for (p = word; *p; p++) { unsigned char ch = *p; - if (ISLOWER (ch)) + if (islower (ch)) *p = toupper (ch); } @@ -962,7 +953,7 @@ yylex (YYSTYPE *lvalp, parser_control *pc) for (;;) { - while (c = *pc->input, ISSPACE (c)) + while (c = *pc->input, isspace (c)) pc->input++; if (ISDIGIT (c) || c == '-' || c == '+') @@ -973,7 +964,7 @@ yylex (YYSTYPE *lvalp, parser_control *pc) if (c == '-' || c == '+') { sign = c == '-' ? -1 : 1; - while (c = *++pc->input, ISSPACE (c)) + while (c = *++pc->input, isspace (c)) continue; if (! ISDIGIT (c)) /* skip the '-' sign */ @@ -1077,7 +1068,7 @@ yylex (YYSTYPE *lvalp, parser_control *pc) } } - if (ISALPHA (c)) + if (isalpha (c)) { char buff[20]; char *p = buff; @@ -1089,7 +1080,7 @@ yylex (YYSTYPE *lvalp, parser_control *pc) *p++ = c; c = *++pc->input; } - while (ISALPHA (c) || c == '.'); + while (isalpha (c) || c == '.'); *p = '\0'; tp = lookup_word (pc, buff); @@ -1201,7 +1192,7 @@ get_date (struct timespec *result, char const *p, struct timespec const *now) if (! tmp) return false; - while (c = *p, ISSPACE (c)) + while (c = *p, isspace (c)) p++; if (strncmp (p, "TZ=\"", 4) == 0) diff --git a/lib/getusershell.c b/lib/getusershell.c index ec35aa241c..a75d4fd486 100644 --- a/lib/getusershell.c +++ b/lib/getusershell.c @@ -1,7 +1,7 @@ /* getusershell.c -- Return names of valid user shells. - Copyright (C) 1991, 1997, 2000, 2001, 2003, 2004, 2005 Free Software - Foundation, Inc. + Copyright (C) 1991, 1997, 2000, 2001, 2003, 2004, 2005, 2006 Free + Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,14 +43,6 @@ # include "unlocked-io.h" #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 - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) - static size_t readname (char **, size_t *, FILE *); #if ! defined ADDITIONAL_DEFAULT_SHELLS && defined __MSDOS__ @@ -152,14 +144,14 @@ readname (char **name, size_t *size, FILE *stream) size_t name_index = 0; /* Skip blank space. */ - while ((c = getc (stream)) != EOF && ISSPACE (c)) + while ((c = getc (stream)) != EOF && isspace (c)) /* Do nothing. */ ; for (;;) { if (*size <= name_index) *name = x2nrealloc (*name, size, sizeof **name); - if (c == EOF || ISSPACE (c)) + if (c == EOF || isspace (c)) break; (*name)[name_index++] = c; c = getc (stream); diff --git a/lib/memcasecmp.c b/lib/memcasecmp.c index b0a492590c..9aebb3e9c0 100644 --- a/lib/memcasecmp.c +++ b/lib/memcasecmp.c @@ -1,5 +1,5 @@ /* Case-insensitive buffer comparator. - Copyright (C) 1996, 1997, 2000, 2003 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 2000, 2003, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,23 +21,11 @@ # include <config.h> #endif -#include <ctype.h> - -#if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(Char) 1 -#else -# define IN_CTYPE_DOMAIN(Char) isascii (Char) -#endif -#define ISLOWER(Char) (IN_CTYPE_DOMAIN (Char) && islower (Char)) - -#if _LIBC || STDC_HEADERS -# define TOUPPER(Char) toupper (Char) -#else -# define TOUPPER(Char) (ISLOWER (Char) ? toupper (Char) : (Char)) -#endif - #include "memcasecmp.h" +#include <ctype.h> +#include <limits.h> + /* Like memcmp, but ignore differences in case. Convert to upper case (not lower) before comparing so that join -i works with sort -f. */ @@ -52,7 +40,10 @@ memcasecmp (const void *vs1, const void *vs2, size_t n) { unsigned char u1 = s1[i]; unsigned char u2 = s2[i]; - int diff = TOUPPER (u1) - TOUPPER (u2); + int U1 = toupper (u1); + int U2 = toupper (u2); + int diff = (UCHAR_MAX <= INT_MAX ? U1 - U2 + : U1 < U2 ? -1 : U2 < U1); if (diff) return diff; } diff --git a/lib/strtod.c b/lib/strtod.c index b8aab679e9..a59858ad5b 100644 --- a/lib/strtod.c +++ b/lib/strtod.c @@ -22,16 +22,6 @@ #include <ctype.h> -#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) -# define IN_CTYPE_DOMAIN(c) 1 -#else -# define IN_CTYPE_DOMAIN(c) isascii(c) -#endif - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) -#define ISDIGIT(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) -#define TOLOWER(c) (IN_CTYPE_DOMAIN (c) ? tolower(c) : (c)) - #include <math.h> #include <float.h> @@ -64,7 +54,7 @@ strtod (const char *nptr, char **endptr) s = nptr; /* Eat whitespace. */ - while (ISSPACE (*s)) + while (isspace ((unsigned char) *s)) ++s; /* Get the sign. */ @@ -78,7 +68,7 @@ strtod (const char *nptr, char **endptr) exponent = 0; for (;; ++s) { - if (ISDIGIT (*s)) + if ('0' <= *s && *s <= '9') { got_digit = 1; @@ -111,7 +101,7 @@ strtod (const char *nptr, char **endptr) if (!got_digit) goto noconv; - if (TOLOWER (*s) == 'e') + if (tolower (*s) == 'e') { /* Get the exponent specified after the `e' or `E'. */ int save = errno; diff --git a/lib/strtol.c b/lib/strtol.c index eda2d26998..cdcd15a318 100644 --- a/lib/strtol.c +++ b/lib/strtol.c @@ -208,11 +208,6 @@ # define TOUPPER(Ch) towupper (Ch) # endif #else -# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) -# define IN_CTYPE_DOMAIN(c) 1 -# else -# define IN_CTYPE_DOMAIN(c) isascii(c) -# endif # define L_(Ch) Ch # define UCHAR_TYPE unsigned char # define STRING_TYPE char @@ -221,9 +216,9 @@ # define ISALPHA(Ch) __isalpha_l ((Ch), loc) # define TOUPPER(Ch) __toupper_l ((Ch), loc) # else -# define ISSPACE(Ch) (IN_CTYPE_DOMAIN (Ch) && isspace (Ch)) -# define ISALPHA(Ch) (IN_CTYPE_DOMAIN (Ch) && isalpha (Ch)) -# define TOUPPER(Ch) (IN_CTYPE_DOMAIN (Ch) ? toupper (Ch) : (Ch)) +# define ISSPACE(Ch) isspace (Ch) +# define ISALPHA(Ch) isalpha (Ch) +# define TOUPPER(Ch) toupper (Ch) # endif #endif diff --git a/lib/xstrtol.c b/lib/xstrtol.c index d01db3ca9e..e7fb068105 100644 --- a/lib/xstrtol.c +++ b/lib/xstrtol.c @@ -1,6 +1,6 @@ /* A more useful interface to strtol. - Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2003, 2004, 2005 + Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify @@ -51,14 +51,6 @@ # define STRTOL_T_MAXIMUM TYPE_MAXIMUM (__strtol_t) #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 - -#define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) - #if !HAVE_DECL_STRTOIMAX && !defined strtoimax intmax_t strtoimax (); #endif @@ -112,7 +104,7 @@ __xstrtol (const char *s, char **ptr, int strtol_base, { const char *q = s; unsigned char ch = *q; - while (ISSPACE (ch)) + while (isspace (ch)) ch = *++q; if (ch == '-') return LONGINT_INVALID; |