diff options
author | Evgeny Vereshchagin <evvers@ya.ru> | 2016-06-27 15:47:37 +0300 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2016-06-27 14:47:37 +0200 |
commit | 2027927b1002a74d24300704a655614f8ea48e45 (patch) | |
tree | 6d11bcf50cd8a1b5a40b6cab488996203bfe4e94 | |
parent | bed48d665599fca9ac44f3bb330087c80edb01c7 (diff) |
basic: pass flags to the fnmatch (#3606)
Fixes:
```
$ systemctl list-unit-files 'hey\*'
0 unit files listed.
$ systemctl list-unit-files | grep hey
hey\x7eho.service static
```
-rw-r--r-- | src/basic/strv.c | 2 | ||||
-rw-r--r-- | src/test/test-strv.c | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/basic/strv.c b/src/basic/strv.c index 578a9c1005..4e8153421a 100644 --- a/src/basic/strv.c +++ b/src/basic/strv.c @@ -834,7 +834,7 @@ bool strv_fnmatch(char* const* patterns, const char *s, int flags) { char* const* p; STRV_FOREACH(p, patterns) - if (fnmatch(*p, s, 0) == 0) + if (fnmatch(*p, s, flags) == 0) return true; return false; diff --git a/src/test/test-strv.c b/src/test/test-strv.c index fc01dcfaf1..cf5887d258 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -685,6 +685,16 @@ static void test_foreach_string(void) { assert_se(streq(x, "zzz")); } +static void test_strv_fnmatch(void) { + _cleanup_free_ char **v = NULL; + + assert_se(!strv_fnmatch(STRV_MAKE_EMPTY, "a", 0)); + + v = strv_new("*\\*", NULL); + assert_se(!strv_fnmatch(v, "\\", 0)); + assert_se(strv_fnmatch(v, "\\", FNM_NOESCAPE)); +} + int main(int argc, char *argv[]) { test_specifier_printf(); test_strv_foreach(); @@ -750,6 +760,7 @@ int main(int argc, char *argv[]) { test_strv_make_nulstr(); test_foreach_string(); + test_strv_fnmatch(); return 0; } |