Zbigniew Jędrzejewski-Szmek 62fe94
From 11adc1aef7a1a6e9ba3fda8eb34eb5fadedc0385 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Thu, 21 Aug 2014 16:10:59 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] util: change return value of startswith() to non-const
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
This way we can use it on non-const strings, and don't end up with a
Zbigniew Jędrzejewski-Szmek 62fe94
const'ified result.
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
This is similar to libc's strstr() which also takes a const string but
Zbigniew Jędrzejewski-Szmek 62fe94
returns a non-const one.
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/shared/util.h | 20 ++++++++++++++------
Zbigniew Jędrzejewski-Szmek 62fe94
 1 file changed, 14 insertions(+), 6 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/shared/util.h b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
index 87ad317319..8cd47b8294 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/shared/util.h
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -158,15 +158,23 @@ static inline bool isempty(const char *p) {
Zbigniew Jędrzejewski-Szmek 62fe94
         return !p || !p[0];
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-static inline const char *startswith(const char *s, const char *prefix) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (strncmp(s, prefix, strlen(prefix)) == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
-                return s + strlen(prefix);
Zbigniew Jędrzejewski-Szmek 62fe94
+static inline char *startswith(const char *s, const char *prefix) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        size_t l;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        l = strlen(prefix);
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (strncmp(s, prefix, l) == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                return (char*) s + l;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
         return NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
-static inline const char *startswith_no_case(const char *s, const char *prefix) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (strncasecmp(s, prefix, strlen(prefix)) == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
-                return s + strlen(prefix);
Zbigniew Jędrzejewski-Szmek 62fe94
+static inline char *startswith_no_case(const char *s, const char *prefix) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        size_t l;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        l = strlen(prefix);
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (strncasecmp(s, prefix, l) == 0)
Zbigniew Jędrzejewski-Szmek 62fe94
+                return (char*) s + l;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
         return NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94