mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +01:00 
			
		
		
		
	Existing ctype checks are implemented using a 256 byte lookup table, allowing each character to be in any of 8 character classes. Since there are 8 existing character classes without the blank class, I implemented isblank without using the lookup table. Since there are only two blank characters - tab and space - this is a more reasonable approach than doubling the size of the lookup table to accommodate one more class. Signed-off-by: Jason Hobbs <jason.hobbs@calxeda.com>
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _LINUX_CTYPE_H
 | |
| #define _LINUX_CTYPE_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 isdigit(c)	((__ismask(c)&(_D)) != 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)
 | |
| #define isspace(c)	((__ismask(c)&(_S)) != 0)
 | |
| #define isupper(c)	((__ismask(c)&(_U)) != 0)
 | |
| #define isxdigit(c)	((__ismask(c)&(_D|_X)) != 0)
 | |
| 
 | |
| /*
 | |
|  * Rather than doubling the size of the _ctype lookup table to hold a 'blank'
 | |
|  * flag, just check for space or tab.
 | |
|  */
 | |
| #define isblank(c)	(c == ' ' || c == '\t')
 | |
| 
 | |
| #define isascii(c) (((unsigned char)(c))<=0x7f)
 | |
| #define toascii(c) (((unsigned char)(c))&0x7f)
 | |
| 
 | |
| 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)
 | |
| 
 | |
| #endif
 |