lib/string/strchr/: stp[c]spn(), strrspn(), strnul(): Add macros and functions

Often, a pointer is more useful than a length when calling these.

Link: <https://docs.oracle.com/cd/E86824_01/html/E54769/strrspn-3gen.html>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2024-05-18 20:41:30 +02:00
committed by Serge Hallyn
parent b38ee0c6d0
commit 2fcf520184
9 changed files with 155 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STPSPN_H_
#include <config.h>
#include <string.h>
#include "attr.h"
// Similar to strspn(3), but return a pointer instead of an offset.
// Similar to strchrnul(3), but search for any bytes not in 'accept'.
#define stpspn(s, accept) \
({ \
__auto_type s_ = s; \
\
s_ + strspn(s_, accept); \
})
#endif // include guard