From 52f1552073047195d51901f7e5a5a4fa3189034e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 23 Nov 2018 16:27:15 +0100 Subject: strv: add new macro STARTSWITH_SET() This is to startswith() what PATH_STARTSWITH_SET() is to path_startswith(). Or in other words, checks if the specified string has any of the listed prefixes, and if so, returns the remainder of the string. --- src/basic/strv.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/basic/strv.h') diff --git a/src/basic/strv.h b/src/basic/strv.h index 5f1803d87d..aa4cd4aaca 100644 --- a/src/basic/strv.h +++ b/src/basic/strv.h @@ -144,6 +144,18 @@ void strv_print(char **l); _x && strv_contains(STRV_MAKE(__VA_ARGS__), _x); \ }) +#define STARTSWITH_SET(p, ...) \ + ({ \ + const char *_p = (p); \ + char *_found = NULL, **_i; \ + STRV_FOREACH(_i, STRV_MAKE(__VA_ARGS__)) { \ + _found = startswith(_p, *_i); \ + if (_found) \ + break; \ + } \ + _found; \ + }) + #define FOREACH_STRING(x, ...) \ for (char **_l = ({ \ char **_ll = STRV_MAKE(__VA_ARGS__); \ -- cgit v1.2.1