mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
tools/nolibc: add strstr()
This is used in various selftests and will be handy when integrating those with nolibc. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de> Acked-by: Willy Tarreau <w@1wt.eu> Link: https://lore.kernel.org/r/20250428-nolibc-misc-v2-1-3c043eeab06c@linutronix.de Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
This commit is contained in:
parent
1f421ddf49
commit
05b6b2a9ef
2 changed files with 23 additions and 0 deletions
|
@ -292,6 +292,26 @@ char *strrchr(const char *s, int c)
|
|||
return (char *)ret;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
char *strstr(const char *haystack, const char *needle)
|
||||
{
|
||||
size_t len_haystack, len_needle;
|
||||
|
||||
len_needle = strlen(needle);
|
||||
if (!len_needle)
|
||||
return NULL;
|
||||
|
||||
len_haystack = strlen(haystack);
|
||||
while (len_haystack >= len_needle) {
|
||||
if (!memcmp(haystack, needle, len_needle))
|
||||
return (char *)haystack;
|
||||
haystack++;
|
||||
len_haystack--;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
int tolower(int c)
|
||||
{
|
||||
|
|
|
@ -1211,6 +1211,9 @@ int run_stdlib(int min, int max)
|
|||
CASE_TEST(strlcpy_2); EXPECT_STRBUFEQ(is_nolibc, strlcpy(buf, "bar", 2), buf, 3, "b"); break;
|
||||
CASE_TEST(strlcpy_3); EXPECT_STRBUFEQ(is_nolibc, strlcpy(buf, "bar", 3), buf, 3, "ba"); break;
|
||||
CASE_TEST(strlcpy_4); EXPECT_STRBUFEQ(is_nolibc, strlcpy(buf, "bar", 4), buf, 3, "bar"); break;
|
||||
CASE_TEST(strstr_foobar_foo); EXPECT_STREQ(1, strstr("foobar", "foo"), "foobar"); break;
|
||||
CASE_TEST(strstr_foobar_bar); EXPECT_STREQ(1, strstr("foobar", "bar"), "bar"); break;
|
||||
CASE_TEST(strstr_foobar_baz); EXPECT_PTREQ(1, strstr("foobar", "baz"), NULL); break;
|
||||
CASE_TEST(memcmp_20_20); EXPECT_EQ(1, memcmp("aaa\x20", "aaa\x20", 4), 0); break;
|
||||
CASE_TEST(memcmp_20_60); EXPECT_LT(1, memcmp("aaa\x20", "aaa\x60", 4), 0); break;
|
||||
CASE_TEST(memcmp_60_20); EXPECT_GT(1, memcmp("aaa\x60", "aaa\x20", 4), 0); break;
|
||||
|
|
Loading…
Add table
Reference in a new issue