From 79142cd28173e3d089581366c809957552b40900 Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Wed, 11 Dec 2024 01:57:29 +0100 Subject: [PATCH] lib/string/ctype/strisascii/: strisdigit(): Add function Reviewed-by: Serge Hallyn Signed-off-by: Alejandro Colomar --- lib/Makefile.am | 2 ++ lib/string/ctype/strisascii/strisdigit.c | 12 +++++++++ lib/string/ctype/strisascii/strisdigit.h | 32 ++++++++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 lib/string/ctype/strisascii/strisdigit.c create mode 100644 lib/string/ctype/strisascii/strisdigit.h diff --git a/lib/Makefile.am b/lib/Makefile.am index fc39e0179..307e70469 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -186,6 +186,8 @@ libshadow_la_SOURCES = \ spawn.c \ sssd.c \ sssd.h \ + string/ctype/strisascii/strisdigit.c \ + string/ctype/strisascii/strisdigit.h \ string/memset/memzero.c \ string/memset/memzero.h \ string/sprintf/snprintf.c \ diff --git a/lib/string/ctype/strisascii/strisdigit.c b/lib/string/ctype/strisascii/strisdigit.c new file mode 100644 index 000000000..a0e144994 --- /dev/null +++ b/lib/string/ctype/strisascii/strisdigit.c @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/ctype/strisascii/strisdigit.h" + +#include + + +extern inline bool strisdigit(const char *s); diff --git a/lib/string/ctype/strisascii/strisdigit.h b/lib/string/ctype/strisascii/strisdigit.h new file mode 100644 index 000000000..065ba19fe --- /dev/null +++ b/lib/string/ctype/strisascii/strisdigit.h @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISDIGIT_H_ +#define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISDIGIT_H_ + + +#include + +#include + +#include "string/strcmp/streq.h" +#include "string/strspn/stpspn.h" + + +inline bool strisdigit(const char *s); + + +// string is [:digit:] +// Like isdigit(3), but check all characters in the string. +inline bool +strisdigit(const char *s) +{ + if (streq(s, "")) + return false; + + return streq(stpspn(s, "0123456789"), ""); +} + + +#endif // include guard -- 2.47.2