diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-11-23 16:27:15 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-11-26 14:06:01 +0100 |
commit | 52f1552073047195d51901f7e5a5a4fa3189034e (patch) | |
tree | f49a11b7b2dc534829c483e48b95809efd86b04e /src/basic | |
parent | update TODO (diff) | |
download | systemd-52f1552073047195d51901f7e5a5a4fa3189034e.tar.xz systemd-52f1552073047195d51901f7e5a5a4fa3189034e.zip |
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.
Diffstat (limited to 'src/basic')
-rw-r--r-- | src/basic/strv.h | 12 |
1 files changed, 12 insertions, 0 deletions
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__); \ |