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
+27
View File
@@ -0,0 +1,27 @@
// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#ifndef SHADOW_INCLUDE_LIB_STRING_STRCHR_STPCSPN_H_
#define SHADOW_INCLUDE_LIB_STRING_STRCHR_STPCSPN_H_
#include <config.h>
#include <string.h>
#include "attr.h"
// Similar to strcspn(3), but return a pointer instead of an offset.
// Similar to strchrnul(3), but search for several delimiters.
// Similar to strpbrk(3), but return 's + strlen(s)' if not found.
#define stpcspn(s, reject) \
({ \
__auto_type s_ = s; \
\
s_ + strcspn(s_, reject); \
})
#endif // include guard