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:
committed by
Martin Pitt
parent
bed48d6655
commit
2027927b10
+1
-1
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user