summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/string.cpp14
-rw-r--r--src/string_func.h3
2 files changed, 16 insertions, 1 deletions
diff --git a/src/string.cpp b/src/string.cpp
index 8b22937ae..289031cfc 100644
--- a/src/string.cpp
+++ b/src/string.cpp
@@ -362,4 +362,18 @@ char *strndup(const char *s, size_t len)
memcpy(tmp, s, len);
return tmp;
}
+
+const char *strcasestr(const char *haystack, const char *needle)
+{
+ size_t hay_len = strlen(haystack);
+ size_t needle_len = strlen(needle);
+ while (hay_len >= needle_len) {
+ if (strncasecmp(haystack, needle, needle_len) == 0) return haystack;
+
+ haystack++;
+ hay_len--;
+ }
+
+ return NULL;
+}
#endif /* !_GNU_SOURCE */
diff --git a/src/string_func.h b/src/string_func.h
index bf7159751..c63fc6719 100644
--- a/src/string_func.h
+++ b/src/string_func.h
@@ -234,8 +234,9 @@ static inline bool IsWhitespace(WChar c)
}
#ifndef _GNU_SOURCE
-/* strndup is a GNU extension */
+/* strndup and strcasestr are GNU extensions */
char *strndup(const char *s, size_t len);
+const char *strcasestr(const char *haystack, const char *needle);
#endif /* !_GNU_SOURCE */
#endif /* STRING_FUNC_H */