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
```
This commit is contained in:
Evgeny Vereshchagin
2016-06-27 14:47:37 +02:00
committed by Martin Pitt
parent bed48d6655
commit 2027927b10
2 changed files with 12 additions and 1 deletions
+1 -1
View File
@@ -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;
+11
View File
@@ -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;
}