ctype.h: remove duplicate isdigit() helper
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>
This commit is contained in:
parent
f44ca0871b
commit
caabdd0f59
2 changed files with 22 additions and 4 deletions
|
@ -64,6 +64,17 @@ static inline void __chk_io_ptr(const volatile void __iomem *ptr) { }
|
||||||
/* Attributes */
|
/* Attributes */
|
||||||
#include <linux/compiler_attributes.h>
|
#include <linux/compiler_attributes.h>
|
||||||
|
|
||||||
|
/* Builtins */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* __has_builtin is supported on gcc >= 10, clang >= 3 and icc >= 21.
|
||||||
|
* In the meantime, to support gcc < 10, we implement __has_builtin
|
||||||
|
* by hand.
|
||||||
|
*/
|
||||||
|
#ifndef __has_builtin
|
||||||
|
#define __has_builtin(x) (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Compiler specific macros. */
|
/* Compiler specific macros. */
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
#include <linux/compiler-clang.h>
|
#include <linux/compiler-clang.h>
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
#ifndef _LINUX_CTYPE_H
|
#ifndef _LINUX_CTYPE_H
|
||||||
#define _LINUX_CTYPE_H
|
#define _LINUX_CTYPE_H
|
||||||
|
|
||||||
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE! This ctype does not handle EOF like the standard C
|
* NOTE! This ctype does not handle EOF like the standard C
|
||||||
* library is required to.
|
* library is required to.
|
||||||
|
@ -23,10 +25,6 @@ extern const unsigned char _ctype[];
|
||||||
#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
|
#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
|
||||||
#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
|
#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
|
||||||
#define iscntrl(c) ((__ismask(c)&(_C)) != 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 isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
|
||||||
#define islower(c) ((__ismask(c)&(_L)) != 0)
|
#define islower(c) ((__ismask(c)&(_L)) != 0)
|
||||||
#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
|
#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
|
||||||
|
@ -39,6 +37,15 @@ static inline int isdigit(int c)
|
||||||
#define isascii(c) (((unsigned char)(c))<=0x7f)
|
#define isascii(c) (((unsigned char)(c))<=0x7f)
|
||||||
#define toascii(c) (((unsigned char)(c))&0x7f)
|
#define toascii(c) (((unsigned char)(c))&0x7f)
|
||||||
|
|
||||||
|
#if __has_builtin(__builtin_isdigit)
|
||||||
|
#define isdigit(c) __builtin_isdigit(c)
|
||||||
|
#else
|
||||||
|
static inline int isdigit(int c)
|
||||||
|
{
|
||||||
|
return '0' <= c && c <= '9';
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static inline unsigned char __tolower(unsigned char c)
|
static inline unsigned char __tolower(unsigned char c)
|
||||||
{
|
{
|
||||||
if (isupper(c))
|
if (isupper(c))
|
||||||
|
|
Loading…
Add table
Reference in a new issue