Optimize startswith() to macro
I guess it's easier and cleaner anyway to use simple static inline functions instead of defines.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
2a0e069256
commit
df89481a35
@@ -128,40 +128,6 @@ char* endswith(const char *s, const char *postfix) {
|
||||
return (char*) s + sl - pl;
|
||||
}
|
||||
|
||||
char* startswith(const char *s, const char *prefix) {
|
||||
const char *a, *b;
|
||||
|
||||
assert(s);
|
||||
assert(prefix);
|
||||
|
||||
a = s, b = prefix;
|
||||
for (;;) {
|
||||
if (*b == 0)
|
||||
return (char*) a;
|
||||
if (*a != *b)
|
||||
return NULL;
|
||||
|
||||
a++, b++;
|
||||
}
|
||||
}
|
||||
|
||||
char* startswith_no_case(const char *s, const char *prefix) {
|
||||
const char *a, *b;
|
||||
|
||||
assert(s);
|
||||
assert(prefix);
|
||||
|
||||
a = s, b = prefix;
|
||||
for (;;) {
|
||||
if (*b == 0)
|
||||
return (char*) a;
|
||||
if (tolower(*a) != tolower(*b))
|
||||
return NULL;
|
||||
|
||||
a++, b++;
|
||||
}
|
||||
}
|
||||
|
||||
bool first_word(const char *s, const char *word) {
|
||||
size_t sl, wl;
|
||||
|
||||
|
||||
+12
-2
@@ -106,9 +106,19 @@ static inline bool isempty(const char *p) {
|
||||
return !p || !p[0];
|
||||
}
|
||||
|
||||
static inline const char *startswith(const char *s, const char *prefix) {
|
||||
if (strncmp(s, prefix, strlen(prefix)) == 0)
|
||||
return s + strlen(prefix);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline const char *startswith_no_case(const char *s, const char *prefix) {
|
||||
if (strncasecmp(s, prefix, strlen(prefix)) == 0)
|
||||
return s + strlen(prefix);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *endswith(const char *s, const char *postfix) _pure_;
|
||||
char *startswith(const char *s, const char *prefix) _pure_;
|
||||
char *startswith_no_case(const char *s, const char *prefix) _pure_;
|
||||
|
||||
bool first_word(const char *s, const char *word) _pure_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user