1 /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2 /* 3 * ctype function definitions for NOLIBC 4 * Copyright (C) 2017-2021 Willy Tarreau <[email protected]> 5 */ 6 7 #ifndef _NOLIBC_CTYPE_H 8 #define _NOLIBC_CTYPE_H 9 10 #include "std.h" 11 12 /* 13 * As much as possible, please keep functions alphabetically sorted. 14 */ 15 16 static __attribute__((unused)) isascii(int c)17int isascii(int c) 18 { 19 /* 0x00..0x7f */ 20 return (unsigned int)c <= 0x7f; 21 } 22 23 static __attribute__((unused)) isblank(int c)24int isblank(int c) 25 { 26 return c == '\t' || c == ' '; 27 } 28 29 static __attribute__((unused)) iscntrl(int c)30int iscntrl(int c) 31 { 32 /* 0x00..0x1f, 0x7f */ 33 return (unsigned int)c < 0x20 || c == 0x7f; 34 } 35 36 static __attribute__((unused)) isdigit(int c)37int isdigit(int c) 38 { 39 return (unsigned int)(c - '0') < 10; 40 } 41 42 static __attribute__((unused)) isgraph(int c)43int isgraph(int c) 44 { 45 /* 0x21..0x7e */ 46 return (unsigned int)(c - 0x21) < 0x5e; 47 } 48 49 static __attribute__((unused)) islower(int c)50int islower(int c) 51 { 52 return (unsigned int)(c - 'a') < 26; 53 } 54 55 static __attribute__((unused)) isprint(int c)56int isprint(int c) 57 { 58 /* 0x20..0x7e */ 59 return (unsigned int)(c - 0x20) < 0x5f; 60 } 61 62 static __attribute__((unused)) isspace(int c)63int isspace(int c) 64 { 65 /* \t is 0x9, \n is 0xA, \v is 0xB, \f is 0xC, \r is 0xD */ 66 return ((unsigned int)c == ' ') || (unsigned int)(c - 0x09) < 5; 67 } 68 69 static __attribute__((unused)) isupper(int c)70int isupper(int c) 71 { 72 return (unsigned int)(c - 'A') < 26; 73 } 74 75 static __attribute__((unused)) isxdigit(int c)76int isxdigit(int c) 77 { 78 return isdigit(c) || (unsigned int)(c - 'A') < 6 || (unsigned int)(c - 'a') < 6; 79 } 80 81 static __attribute__((unused)) isalpha(int c)82int isalpha(int c) 83 { 84 return islower(c) || isupper(c); 85 } 86 87 static __attribute__((unused)) isalnum(int c)88int isalnum(int c) 89 { 90 return isalpha(c) || isdigit(c); 91 } 92 93 static __attribute__((unused)) ispunct(int c)94int ispunct(int c) 95 { 96 return isgraph(c) && !isalnum(c); 97 } 98 99 /* make sure to include all global symbols */ 100 #include "nolibc.h" 101 102 #endif /* _NOLIBC_CTYPE_H */ 103