Mercurial > hg > octave-lojdl > gnulib-hg
changeset 815:2ceb1692fc5a
(ISDIGIT): Replace with smaller, faster edition
that yields nonzero only on ASCII digits.
(ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
used to have. From Paul Eggert.
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Wed, 18 Dec 1996 03:30:20 +0000 |
parents | 3976dc4f68dd |
children | ef7796f30b31 |
files | lib/backupfile.c |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/backupfile.c +++ b/lib/backupfile.c @@ -68,8 +68,17 @@ # define IN_CTYPE_DOMAIN(c) isascii(c) #endif -#define ISDIGIT(c) (IN_CTYPE_DOMAIN ((unsigned char) (c)) \ - && isdigit ((unsigned char) (c))) +#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) + +/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: + - Its arg may be any int or unsigned int; it need not be an unsigned char. + - It's guaranteed to evaluate its argument exactly once. + - It's typically faster. + Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that + only '0' through '9' are digits. Prefer ISDIGIT to ISDIGIT_LOCALE unless + it's important to use the locale's definition of `digit' even when the + host does not conform to Posix. */ +#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9) #if defined (HAVE_UNISTD_H) #include <unistd.h>