diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/strv.c | 10 | ||||
-rw-r--r-- | src/shared/strv.h | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/shared/strv.c b/src/shared/strv.c index e418312d52..2268bf61db 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -692,3 +692,13 @@ char **strv_reverse(char **l) { return l; } + +bool strv_fnmatch(const char *s, char* const* patterns, int flags) { + char* const* p; + + STRV_FOREACH(p, patterns) + if (fnmatch(*p, s, 0) == 0) + return true; + + return false; +} diff --git a/src/shared/strv.h b/src/shared/strv.h index e385bf73b8..a899395ba4 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -23,6 +23,7 @@ #include <stdarg.h> #include <stdbool.h> +#include <fnmatch.h> #include "util.h" @@ -144,3 +145,11 @@ void strv_print(char **l); })) char **strv_reverse(char **l); + +bool strv_fnmatch(const char *s, char* const* patterns, int flags); + +static inline bool strv_fnmatch_or_empty(const char *s, char* const* patterns, int flags) { + assert(s); + return strv_isempty(patterns) || + strv_fnmatch(s, patterns, flags); +} |