mirror of
https://github.com/systemd/systemd
synced 2024-10-15 04:24:19 +00:00
boot: Add strchr8/16
This commit is contained in:
parent
08ed842b56
commit
5d7e0e8341
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue