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 Tarreauint 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 Tarreauint isblank(int c) 2850850c38SWilly Tarreau { 2950850c38SWilly Tarreau return c == '\t' || c == ' '; 3050850c38SWilly Tarreau } 3150850c38SWilly Tarreau 3250850c38SWilly Tarreau static __attribute__((unused)) iscntrl(int c)3350850c38SWilly Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint 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 Tarreauint ispunct(int c) 9850850c38SWilly Tarreau { 9950850c38SWilly Tarreau return isgraph(c) && !isalnum(c); 10062a2af07SWilly Tarreau } 10162a2af07SWilly Tarreau 10262a2af07SWilly Tarreau #endif /* _NOLIBC_CTYPE_H */ 103