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:
Kay Sievers
2013-08-22 00:52:14 -04:00
committed by Zbigniew Jędrzejewski-Szmek
parent 2a0e069256
commit df89481a35
2 changed files with 12 additions and 36 deletions
-34
View File
@@ -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
View File
@@ -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_;