boot: Add strchr8/16

This commit is contained in:
Jan Janssen 2022-05-24 10:21:31 +02:00
parent 08ed842b56
commit 5d7e0e8341
3 changed files with 42 additions and 0 deletions

View file

@ -121,3 +121,20 @@ int strcasecmp16(const char16_t *s1, const char16_t *s2) {
DEFINE_STRCPY(char, strcpy8);
DEFINE_STRCPY(char16_t, strcpy16);
#define DEFINE_STRCHR(type, name) \
type *name(const type *s, type c) { \
if (!s) \
return NULL; \
\
while (*s) { \
if (*s == c) \
return (type *) s; \
s++; \
} \
\
return NULL; \
}
DEFINE_STRCHR(char, strchr8);
DEFINE_STRCHR(char16_t, strchr16);

View file

@ -60,3 +60,6 @@ static inline bool strcaseeq16(const char16_t *s1, const char16_t *s2) {
char *strcpy8(char * restrict dest, const char * restrict src);
char16_t *strcpy16(char16_t * restrict dest, const char16_t * restrict src);
char *strchr8(const char *s, char c);
char16_t *strchr16(const char16_t *s, char16_t c);

View file

@ -200,4 +200,26 @@ TEST(strcpy16) {
assert_se(streq16(buf, u""));
}
TEST(strchr8) {
assert_se(!strchr8(NULL, 'a'));
assert_se(!strchr8("", 'a'));
assert_se(!strchr8("123", 'a'));
const char str[] = "abcaBc";
assert_se(strchr8(str, 'a') == &str[0]);
assert_se(strchr8(str, 'c') == &str[2]);
assert_se(strchr8(str, 'B') == &str[4]);
}
TEST(strchr16) {
assert_se(!strchr16(NULL, 'a'));
assert_se(!strchr16(u"", 'a'));
assert_se(!strchr16(u"123", 'a'));
const char16_t str[] = u"abcaBc";
assert_se(strchr16(str, 'a') == &str[0]);
assert_se(strchr16(str, 'c') == &str[2]);
assert_se(strchr16(str, 'B') == &str[4]);
}
DEFINE_TEST_MAIN(LOG_INFO);