xref: /linux/tools/include/nolibc/ctype.h (revision ab93e0dd72c37d378dd936f031ffb83ff2bd87ce)
162a2af07SWilly Tarreau /* SPDX-License-Identifier: LGPL-2.1 OR MIT */
262a2af07SWilly Tarreau /*
362a2af07SWilly Tarreau  * ctype function definitions for NOLIBC
462a2af07SWilly Tarreau  * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
562a2af07SWilly Tarreau  */
662a2af07SWilly Tarreau 
7*3785289fSThomas Weißschuh /* make sure to include all global symbols */
8*3785289fSThomas Weißschuh #include "nolibc.h"
9*3785289fSThomas Weißschuh 
1062a2af07SWilly Tarreau #ifndef _NOLIBC_CTYPE_H
1162a2af07SWilly Tarreau #define _NOLIBC_CTYPE_H
1262a2af07SWilly Tarreau 
1362a2af07SWilly Tarreau #include "std.h"
1462a2af07SWilly Tarreau 
1562a2af07SWilly Tarreau /*
1662a2af07SWilly Tarreau  * As much as possible, please keep functions alphabetically sorted.
1762a2af07SWilly Tarreau  */
1862a2af07SWilly Tarreau 
1962a2af07SWilly Tarreau static __attribute__((unused))
isascii(int c)2050850c38SWilly Tarreau int isascii(int c)
2150850c38SWilly Tarreau {
2250850c38SWilly Tarreau 	/* 0x00..0x7f */
2350850c38SWilly Tarreau 	return (unsigned int)c <= 0x7f;
2450850c38SWilly Tarreau }
2550850c38SWilly Tarreau 
2650850c38SWilly Tarreau static __attribute__((unused))
isblank(int c)2750850c38SWilly Tarreau int isblank(int c)
2850850c38SWilly Tarreau {
2950850c38SWilly Tarreau 	return c == '\t' || c == ' ';
3050850c38SWilly Tarreau }
3150850c38SWilly Tarreau 
3250850c38SWilly Tarreau static __attribute__((unused))
iscntrl(int c)3350850c38SWilly Tarreau int iscntrl(int c)
3450850c38SWilly Tarreau {
3550850c38SWilly Tarreau 	/* 0x00..0x1f, 0x7f */
3650850c38SWilly Tarreau 	return (unsigned int)c < 0x20 || c == 0x7f;
3750850c38SWilly Tarreau }
3850850c38SWilly Tarreau 
3950850c38SWilly Tarreau static __attribute__((unused))
isdigit(int c)4062a2af07SWilly Tarreau int isdigit(int c)
4162a2af07SWilly Tarreau {
4250850c38SWilly Tarreau 	return (unsigned int)(c - '0') < 10;
4350850c38SWilly Tarreau }
4450850c38SWilly Tarreau 
4550850c38SWilly Tarreau static __attribute__((unused))
isgraph(int c)4650850c38SWilly Tarreau int isgraph(int c)
4750850c38SWilly Tarreau {
4850850c38SWilly Tarreau 	/* 0x21..0x7e */
4950850c38SWilly Tarreau 	return (unsigned int)(c - 0x21) < 0x5e;
5050850c38SWilly Tarreau }
5150850c38SWilly Tarreau 
5250850c38SWilly Tarreau static __attribute__((unused))
islower(int c)5350850c38SWilly Tarreau int islower(int c)
5450850c38SWilly Tarreau {
5550850c38SWilly Tarreau 	return (unsigned int)(c - 'a') < 26;
5650850c38SWilly Tarreau }
5750850c38SWilly Tarreau 
5850850c38SWilly Tarreau static __attribute__((unused))
isprint(int c)5950850c38SWilly Tarreau int isprint(int c)
6050850c38SWilly Tarreau {
6150850c38SWilly Tarreau 	/* 0x20..0x7e */
6250850c38SWilly Tarreau 	return (unsigned int)(c - 0x20) < 0x5f;
6350850c38SWilly Tarreau }
6450850c38SWilly Tarreau 
6550850c38SWilly Tarreau static __attribute__((unused))
isspace(int c)6650850c38SWilly Tarreau int isspace(int c)
6750850c38SWilly Tarreau {
6850850c38SWilly Tarreau 	/* \t is 0x9, \n is 0xA, \v is 0xB, \f is 0xC, \r is 0xD */
6950850c38SWilly Tarreau 	return ((unsigned int)c == ' ') || (unsigned int)(c - 0x09) < 5;
7050850c38SWilly Tarreau }
7150850c38SWilly Tarreau 
7250850c38SWilly Tarreau static __attribute__((unused))
isupper(int c)7350850c38SWilly Tarreau int isupper(int c)
7450850c38SWilly Tarreau {
7550850c38SWilly Tarreau 	return (unsigned int)(c - 'A') < 26;
7650850c38SWilly Tarreau }
7750850c38SWilly Tarreau 
7850850c38SWilly Tarreau static __attribute__((unused))
isxdigit(int c)7950850c38SWilly Tarreau int isxdigit(int c)
8050850c38SWilly Tarreau {
8150850c38SWilly Tarreau 	return isdigit(c) || (unsigned int)(c - 'A') < 6 || (unsigned int)(c - 'a') < 6;
8250850c38SWilly Tarreau }
8350850c38SWilly Tarreau 
8450850c38SWilly Tarreau static __attribute__((unused))
isalpha(int c)8550850c38SWilly Tarreau int isalpha(int c)
8650850c38SWilly Tarreau {
8750850c38SWilly Tarreau 	return islower(c) || isupper(c);
8850850c38SWilly Tarreau }
8950850c38SWilly Tarreau 
9050850c38SWilly Tarreau static __attribute__((unused))
isalnum(int c)9150850c38SWilly Tarreau int isalnum(int c)
9250850c38SWilly Tarreau {
9350850c38SWilly Tarreau 	return isalpha(c) || isdigit(c);
9450850c38SWilly Tarreau }
9550850c38SWilly Tarreau 
9650850c38SWilly Tarreau static __attribute__((unused))
ispunct(int c)9750850c38SWilly Tarreau int ispunct(int c)
9850850c38SWilly Tarreau {
9950850c38SWilly Tarreau 	return isgraph(c) && !isalnum(c);
10062a2af07SWilly Tarreau }
10162a2af07SWilly Tarreau 
10262a2af07SWilly Tarreau #endif /* _NOLIBC_CTYPE_H */
103