summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-10-19 04:52:51 +0200
committerLennart Poettering <lennart@poettering.net>2012-10-19 04:53:46 +0200
commit8c7c140fcab0592735d22168657a143969a4c2bf (patch)
treed9094779472102860625180329e3b1ac9b324e9b
parent857a493d55f94731394e4d9f61ffce661858e9a0 (diff)
util: change endswith() to return a pointer to the suffix
-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);