Remove definition of ISDIGIT_LOCALE(c)

It wasn't being used at all.  Let's remove it.

Use isdigit(3) directly in comments that referenced it.

Also, in those comments, remove an outdated reference to the fact
that ISDIGIT_LOCALE(c) might evaluate its argument more than once,
which could be true a few commits ago, until
IN_CTYPE_DEFINITION(c) was removed.  Previously, the definition
for ISDIGIT_LOCALE(c) was:

 #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 ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c))

Which could evaluate 'c' twice on pre-C89 systems (which I hope
don't exist nowadays).

Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
This commit is contained in:
Alejandro Colomar 2021-12-28 19:38:58 +01:00
parent 2a41a72b8c
commit 44126d85ee
2 changed files with 2 additions and 7 deletions

View File

@ -22,8 +22,6 @@ typedef unsigned char _Bool;
# define __bool_true_false_are_defined 1
#endif
#define ISDIGIT_LOCALE(c) isdigit (c)
/* Take care of NLS matters. */
#ifdef S_SPLINT_S
extern char *setlocale(int categories, const char *locale);

View File

@ -31,14 +31,11 @@
#include <ctype.h>
#include <time.h>
#define ISDIGIT_LOCALE(c) isdigit (c)
/* ISDIGIT differs from ISDIGIT_LOCALE, as follows:
/* ISDIGIT differs from isdigit(3), 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
only '0' through '9' are digits. Prefer ISDIGIT to isdigit(3) 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)