forked from mirrors/linux
		
	 caabdd0f59
			
		
	
	
		caabdd0f59
		
	
	
	
	
		
			
			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>
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _LINUX_CTYPE_H
 | |
| #define _LINUX_CTYPE_H
 | |
| 
 | |
| #include <linux/compiler.h>
 | |
| 
 | |
| /*
 | |
|  * NOTE! This ctype does not handle EOF like the standard C
 | |
|  * library is required to.
 | |
|  */
 | |
| 
 | |
| #define _U	0x01	/* upper */
 | |
| #define _L	0x02	/* lower */
 | |
| #define _D	0x04	/* digit */
 | |
| #define _C	0x08	/* cntrl */
 | |
| #define _P	0x10	/* punct */
 | |
| #define _S	0x20	/* white space (space/lf/tab) */
 | |
| #define _X	0x40	/* hex digit */
 | |
| #define _SP	0x80	/* hard space (0x20) */
 | |
| 
 | |
| extern const unsigned char _ctype[];
 | |
| 
 | |
| #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
 | |
| 
 | |
| #define isalnum(c)	((__ismask(c)&(_U|_L|_D)) != 0)
 | |
| #define isalpha(c)	((__ismask(c)&(_U|_L)) != 0)
 | |
| #define iscntrl(c)	((__ismask(c)&(_C)) != 0)
 | |
| #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)
 | |
| #define ispunct(c)	((__ismask(c)&(_P)) != 0)
 | |
| /* Note: isspace() must return false for %NUL-terminator */
 | |
| #define isspace(c)	((__ismask(c)&(_S)) != 0)
 | |
| #define isupper(c)	((__ismask(c)&(_U)) != 0)
 | |
| #define isxdigit(c)	((__ismask(c)&(_D|_X)) != 0)
 | |
| 
 | |
| #define isascii(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)
 | |
| {
 | |
| 	if (isupper(c))
 | |
| 		c -= 'A'-'a';
 | |
| 	return c;
 | |
| }
 | |
| 
 | |
| static inline unsigned char __toupper(unsigned char c)
 | |
| {
 | |
| 	if (islower(c))
 | |
| 		c -= 'a'-'A';
 | |
| 	return c;
 | |
| }
 | |
| 
 | |
| #define tolower(c) __tolower(c)
 | |
| #define toupper(c) __toupper(c)
 | |
| 
 | |
| /*
 | |
|  * Fast implementation of tolower() for internal usage. Do not use in your
 | |
|  * code.
 | |
|  */
 | |
| static inline char _tolower(const char c)
 | |
| {
 | |
| 	return c | 0x20;
 | |
| }
 | |
| 
 | |
| /* Fast check for octal digit */
 | |
| static inline int isodigit(const char c)
 | |
| {
 | |
| 	return c >= '0' && c <= '7';
 | |
| }
 | |
| 
 | |
| #endif
 |