summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/util.c11
-rw-r--r--src/shared/util.h2
2 files changed, 8 insertions, 5 deletions
diff --git a/src/shared/util.c b/src/shared/util.c
index ef30cb2dab..42a2e27308 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -195,7 +195,7 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) {
return tv;
}
-bool endswith(const char *s, const char *postfix) {
+char* endswith(const char *s, const char *postfix) {
size_t sl, pl;
assert(s);
@@ -205,12 +205,15 @@ bool endswith(const char *s, const char *postfix) {
pl = strlen(postfix);
if (pl == 0)
- return true;
+ return (char*) s + sl;
if (sl < pl)
- return false;
+ return NULL;
+
+ if (memcmp(s + sl - pl, postfix, pl) != 0)
+ return NULL;
- return memcmp(s + sl - pl, postfix, pl) == 0;
+ return (char*) s + sl - pl;
}
bool startswith(const char *s, const char *prefix) {
diff --git a/src/shared/util.h b/src/shared/util.h
index affb66998c..77d28751f0 100644
--- a/src/shared/util.h
+++ b/src/shared/util.h
@@ -141,7 +141,7 @@ static inline bool isempty(const char *p) {
return !p || !p[0];
}
-bool endswith(const char *s, const char *postfix);
+char *endswith(const char *s, const char *postfix);
bool startswith(const char *s, const char *prefix);
bool startswith_no_case(const char *s, const char *prefix);