From: Alejandro Colomar Date: Wed, 11 Dec 2024 20:42:07 +0000 (+0100) Subject: lib/string/ctype/strisascii/: strisprint(): Add function X-Git-Tag: 4.18.0-rc1~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7031cecd2ed73120c69663a87e2911880e6dee2;p=thirdparty%2Fshadow.git lib/string/ctype/strisascii/: strisprint(): Add function Signed-off-by: Alejandro Colomar --- diff --git a/lib/Makefile.am b/lib/Makefile.am index e9ffd7e1f..fd9292a3e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -181,6 +181,8 @@ libshadow_la_SOURCES = \ sssd.h \ string/ctype/strisascii/strisdigit.c \ string/ctype/strisascii/strisdigit.h \ + string/ctype/strisascii/strisprint.c \ + string/ctype/strisascii/strisprint.h \ string/ctype/strtoascii/strtolower.c \ string/ctype/strtoascii/strtolower.h \ string/memset/memzero.c \ diff --git a/lib/string/ctype/strisascii/strisprint.c b/lib/string/ctype/strisascii/strisprint.c new file mode 100644 index 000000000..8fc629632 --- /dev/null +++ b/lib/string/ctype/strisascii/strisprint.c @@ -0,0 +1,12 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/ctype/strisascii/strisprint.h" + +#include + + +extern inline bool strisprint(const char *s); diff --git a/lib/string/ctype/strisascii/strisprint.h b/lib/string/ctype/strisascii/strisprint.h new file mode 100644 index 000000000..12e6a8950 --- /dev/null +++ b/lib/string/ctype/strisascii/strisprint.h @@ -0,0 +1,39 @@ +// SPDX-FileCopyrightText: 2024-2025, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISPRINT_H_ +#define SHADOW_INCLUDE_LIB_STRING_CTYPE_STRISASCII_STRISPRINT_H_ + + +#include + +#include +#include + +#include "string/strcmp/streq.h" + + +inline bool strisprint(const char *s); + + +// string is [:print:] +// Like isprint(3), but check all characters in the string. +inline bool +strisprint(const char *s) +{ + if (streq(s, "")) + return false; + + for (; !streq(s, ""); s++) { + unsigned char c = *s; + + if (!isprint(c)) + return false; + } + + return true; +} + + +#endif // include guard