]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
string-util: Add startswith_strv()
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 18 Apr 2023 11:11:45 +0000 (13:11 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 20 Apr 2023 11:43:37 +0000 (13:43 +0200)
This is the function version of STARTSWITH_SET(). We also move
STARTSWITH_SET() to string-util.h as it fits more there than in
strv.h and reimplement it using startswith_strv().

src/basic/string-util.c
src/basic/string-util.h
src/basic/strv.h

index cc2f8ecdabeb3fcd6f775a8c96bb883bee2abf34..c74ee67dfec24c7d08eb11051d2b4887d98a493d 100644 (file)
@@ -1283,3 +1283,15 @@ char *find_line_startswith(const char *haystack, const char *needle) {
 
         return p + strlen(needle);
 }
+
+char *startswith_strv(const char *string, char **strv) {
+        char *found = NULL;
+
+        STRV_FOREACH(i, strv) {
+                found = startswith(string, *i);
+                if (found)
+                        break;
+        }
+
+        return found;
+}
index 75483924af0bca6d83899fdf4ddb0e0ed2358dd2..4430910e225857a741fb750b1738baa80e37a95d 100644 (file)
@@ -267,3 +267,8 @@ char *strdupspn(const char *a, const char *accept);
 char *strdupcspn(const char *a, const char *reject);
 
 char *find_line_startswith(const char *haystack, const char *needle);
+
+char *startswith_strv(const char *string, char **strv);
+
+#define STARTSWITH_SET(p, ...)                                  \
+        startswith_strv(p, STRV_MAKE(__VA_ARGS__))
index b4d3f121f9a296fab22ba9b95a14fcff1f8e6967..544d46a3f8d6f5b19623b8b95b7848aecfc9becf 100644 (file)
@@ -200,18 +200,6 @@ static inline void strv_print(char * const *l) {
                 _x && strv_contains_case(STRV_MAKE(__VA_ARGS__), _x); \
         })
 
-#define STARTSWITH_SET(p, ...)                                  \
-        ({                                                      \
-                const char *_p = (p);                           \
-                char *_found = NULL;                            \
-                STRV_FOREACH(_i, STRV_MAKE(__VA_ARGS__)) {      \
-                        _found = startswith(_p, *_i);           \
-                        if (_found)                             \
-                                break;                          \
-                }                                               \
-                _found;                                         \
-        })
-
 #define ENDSWITH_SET(p, ...)                                    \
         ({                                                      \
                 const char *_p = (p);                           \