Messages in this thread Patch in this message | | | From | Arnd Bergmann <> | Subject | [PATCH] ctype.h: remove duplicate isdigit() helper | Date | Mon, 26 Oct 2020 17:23:29 +0100 |
| |
From: Arnd Bergmann <arnd@arndb.de>
gcc warns a few thousand times about the isdigit() shadow:
include/linux/ctype.h:26:19: warning: declaration of 'isdigit' shadows a built-in function [-Wshadow]
As there is already a compiler builtin, just use that, and make it clear we do that by defining a macro. Unfortunately, clang does not have the isdigit() builtin, so this has to be conditional.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- include/linux/ctype.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/include/linux/ctype.h b/include/linux/ctype.h index 363b004426db..c407acb258c2 100644 --- a/include/linux/ctype.h +++ b/include/linux/ctype.h @@ -23,10 +23,6 @@ extern const unsigned char _ctype[]; #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) #define iscntrl(c) ((__ismask(c)&(_C)) != 0) -static inline int isdigit(int c) -{ - return '0' <= c && c <= '9'; -} #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) #define islower(c) ((__ismask(c)&(_L)) != 0) #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) @@ -39,6 +35,18 @@ static inline int isdigit(int c) #define isascii(c) (((unsigned char)(c))<=0x7f) #define toascii(c) (((unsigned char)(c))&0x7f) +#if defined __has_builtin +#if __has_builtin(__builtin_isdigit) +#define isdigit(ch) __builtin_isdigit(ch) +#endif +#endif +#ifndef isdigit +static inline int isdigit(int c) +{ + return '0' <= c && c <= '9'; +} +#endif + static inline unsigned char __tolower(unsigned char c) { if (isupper(c)) -- 2.27.0
| |