From a780a7d1449ea8ffa87e56baf401eadac0ae419e Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Wed, 2 Aug 2017 22:24:12 +0200 Subject: [PATCH] Add string_pbrk --- m-string.h | 9 +++++++++ tests/test-mstring.c | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/m-string.h b/m-string.h index 26fe4f84..dca7aff4 100644 --- a/m-string.h +++ b/m-string.h @@ -436,6 +436,15 @@ string_cspn(const string_t v1, const char accept[]) return strcspn(string_get_cstr(v1), accept); } +static inline size_t +string_pbrk(const string_t v1, const char first_of[]) +{ + STRING_CONTRACT (v1); + M_ASSUME (first_of != NULL); + const char *p = M_ASSIGN_CAST(const char*, strpbrk(string_get_cstr(v1), first_of)); + return p == NULL ? STRING_FAILURE : (size_t) (p-string_get_cstr(v1)); +} + static inline void string_left(string_t v, size_t index) { diff --git a/tests/test-mstring.c b/tests/test-mstring.c index 311987ae..a911c313 100644 --- a/tests/test-mstring.c +++ b/tests/test-mstring.c @@ -318,6 +318,11 @@ int main(void) string_replace_at(s1, 6, 3, "World"); assert(string_equal_str_p(s1, "HELLO World!")); + h = string_pbrk(s1, "AB"); + assert(h==STRING_FAILURE); + h = string_pbrk(s1, "oO"); + assert(h==4); + string_clear (s1); string_clear (s2);