diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-04-14 12:48:14 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-04-14 16:56:15 +0200 |
commit | d791013ff529cbbb74d4cc5f1455f172befab1e6 (patch) | |
tree | a52a2742502f99537ba58cdae318336c89687aba /src/test/test-string-util.c | |
parent | bb7b1da8fedd9ba057809a8aca06594c56f0a409 (diff) | |
download | systemd-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.c | 17 |
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); |