xref: /openbmc/linux/tools/include/nolibc/ctype.h (revision 55abdd1f)
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 
762a2af07SWilly Tarreau #ifndef _NOLIBC_CTYPE_H
862a2af07SWilly Tarreau #define _NOLIBC_CTYPE_H
962a2af07SWilly Tarreau 
1062a2af07SWilly Tarreau #include "std.h"
1162a2af07SWilly Tarreau 
1262a2af07SWilly Tarreau /*
1362a2af07SWilly Tarreau  * As much as possible, please keep functions alphabetically sorted.
1462a2af07SWilly Tarreau  */
1562a2af07SWilly Tarreau 
1662a2af07SWilly Tarreau static __attribute__((unused))
isascii(int c)1750850c38SWilly Tarreau int isascii(int c)
1850850c38SWilly Tarreau {
1950850c38SWilly Tarreau 	/* 0x00..0x7f */
2050850c38SWilly Tarreau 	return (unsigned int)c <= 0x7f;
2150850c38SWilly Tarreau }
2250850c38SWilly Tarreau 
2350850c38SWilly Tarreau static __attribute__((unused))
isblank(int c)2450850c38SWilly Tarreau int isblank(int c)
2550850c38SWilly Tarreau {
2650850c38SWilly Tarreau 	return c == '\t' || c == ' ';
2750850c38SWilly Tarreau }
2850850c38SWilly Tarreau 
2950850c38SWilly Tarreau static __attribute__((unused))
iscntrl(int c)3050850c38SWilly Tarreau int iscntrl(int c)
3150850c38SWilly Tarreau {
3250850c38SWilly Tarreau 	/* 0x00..0x1f, 0x7f */
3350850c38SWilly Tarreau 	return (unsigned int)c < 0x20 || c == 0x7f;
3450850c38SWilly Tarreau }
3550850c38SWilly Tarreau 
3650850c38SWilly Tarreau static __attribute__((unused))
isdigit(int c)3762a2af07SWilly Tarreau int isdigit(int c)
3862a2af07SWilly Tarreau {
3950850c38SWilly Tarreau 	return (unsigned int)(c - '0') < 10;
4050850c38SWilly Tarreau }
4150850c38SWilly Tarreau 
4250850c38SWilly Tarreau static __attribute__((unused))
isgraph(int c)4350850c38SWilly Tarreau int isgraph(int c)
4450850c38SWilly Tarreau {
4550850c38SWilly Tarreau 	/* 0x21..0x7e */
4650850c38SWilly Tarreau 	return (unsigned int)(c - 0x21) < 0x5e;
4750850c38SWilly Tarreau }
4850850c38SWilly Tarreau 
4950850c38SWilly Tarreau static __attribute__((unused))
islower(int c)5050850c38SWilly Tarreau int islower(int c)
5150850c38SWilly Tarreau {
5250850c38SWilly Tarreau 	return (unsigned int)(c - 'a') < 26;
5350850c38SWilly Tarreau }
5450850c38SWilly Tarreau 
5550850c38SWilly Tarreau static __attribute__((unused))
isprint(int c)5650850c38SWilly Tarreau int isprint(int c)
5750850c38SWilly Tarreau {
5850850c38SWilly Tarreau 	/* 0x20..0x7e */
5950850c38SWilly Tarreau 	return (unsigned int)(c - 0x20) < 0x5f;
6050850c38SWilly Tarreau }
6150850c38SWilly Tarreau 
6250850c38SWilly Tarreau static __attribute__((unused))
isspace(int c)6350850c38SWilly Tarreau int isspace(int c)
6450850c38SWilly Tarreau {
6550850c38SWilly Tarreau 	/* \t is 0x9, \n is 0xA, \v is 0xB, \f is 0xC, \r is 0xD */
6650850c38SWilly Tarreau 	return ((unsigned int)c == ' ') || (unsigned int)(c - 0x09) < 5;
6750850c38SWilly Tarreau }
6850850c38SWilly Tarreau 
6950850c38SWilly Tarreau static __attribute__((unused))
isupper(int c)7050850c38SWilly Tarreau int isupper(int c)
7150850c38SWilly Tarreau {
7250850c38SWilly Tarreau 	return (unsigned int)(c - 'A') < 26;
7350850c38SWilly Tarreau }
7450850c38SWilly Tarreau 
7550850c38SWilly Tarreau static __attribute__((unused))
isxdigit(int c)7650850c38SWilly Tarreau int isxdigit(int c)
7750850c38SWilly Tarreau {
7850850c38SWilly Tarreau 	return isdigit(c) || (unsigned int)(c - 'A') < 6 || (unsigned int)(c - 'a') < 6;
7950850c38SWilly Tarreau }
8050850c38SWilly Tarreau 
8150850c38SWilly Tarreau static __attribute__((unused))
isalpha(int c)8250850c38SWilly Tarreau int isalpha(int c)
8350850c38SWilly Tarreau {
8450850c38SWilly Tarreau 	return islower(c) || isupper(c);
8550850c38SWilly Tarreau }
8650850c38SWilly Tarreau 
8750850c38SWilly Tarreau static __attribute__((unused))
isalnum(int c)8850850c38SWilly Tarreau int isalnum(int c)
8950850c38SWilly Tarreau {
9050850c38SWilly Tarreau 	return isalpha(c) || isdigit(c);
9150850c38SWilly Tarreau }
9250850c38SWilly Tarreau 
9350850c38SWilly Tarreau static __attribute__((unused))
ispunct(int c)9450850c38SWilly Tarreau int ispunct(int c)
9550850c38SWilly Tarreau {
9650850c38SWilly Tarreau 	return isgraph(c) && !isalnum(c);
9762a2af07SWilly Tarreau }
9862a2af07SWilly Tarreau 
99*55abdd1fSWilly Tarreau /* make sure to include all global symbols */
100*55abdd1fSWilly Tarreau #include "nolibc.h"
101*55abdd1fSWilly Tarreau 
10262a2af07SWilly Tarreau #endif /* _NOLIBC_CTYPE_H */
103