summaryrefslogtreecommitdiff
path: root/src/test/test-string-util.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-04-14 12:48:14 +0200
committerLennart Poettering <lennart@poettering.net>2023-04-14 16:56:15 +0200
commitd791013ff529cbbb74d4cc5f1455f172befab1e6 (patch)
treea52a2742502f99537ba58cdae318336c89687aba /src/test/test-string-util.c
parentbb7b1da8fedd9ba057809a8aca06594c56f0a409 (diff)
downloadsystemd-d791013ff529cbbb74d4cc5f1455f172befab1e6.tar.gz
string-util: add strstrafter()
strstrafter() is like strstr() but returns a pointer to the first character *after* the found substring, not on the substring itself. Quite often this is what we actually want. Inspired by #27267 I think it makes sense to add a helper for this, to avoid the potentially fragile manual pointer increment afterwards.
Diffstat (limited to 'src/test/test-string-util.c')
-rw-r--r--src/test/test-string-util.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/test/test-string-util.c b/src/test/test-string-util.c
index 9eb048adfa..65052c627d 100644
--- a/src/test/test-string-util.c
+++ b/src/test/test-string-util.c
@@ -1247,4 +1247,21 @@ TEST(find_line_startswith) {
assert_se(!find_line_startswith(emptystring, "x"));
}
+TEST(strstrafter) {
+ static const char buffer[] = "abcdefghijklmnopqrstuvwxyz";
+
+ assert_se(!strstrafter(NULL, NULL));
+ assert_se(!strstrafter("", NULL));
+ assert_se(!strstrafter(NULL, ""));
+ assert_se(streq_ptr(strstrafter("", ""), ""));
+
+ assert_se(strstrafter(buffer, "a") == buffer + 1);
+ assert_se(strstrafter(buffer, "") == buffer);
+ assert_se(strstrafter(buffer, "ab") == buffer + 2);
+ assert_se(strstrafter(buffer, "cde") == buffer + 5);
+ assert_se(strstrafter(buffer, "xyz") == strchr(buffer, 0));
+ assert_se(strstrafter(buffer, buffer) == strchr(buffer, 0));
+ assert_se(!strstrafter(buffer, "-"));
+}
+
DEFINE_TEST_MAIN(LOG_DEBUG);