diff options
Diffstat (limited to 'tools/perf/util/string.c')
-rw-r--r-- | tools/perf/util/string.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c index f24a8cc933d5..5352d7dccc61 100644 --- a/tools/perf/util/string.c +++ b/tools/perf/util/string.c | |||
@@ -226,3 +226,28 @@ fail: | |||
226 | argv_free(argv); | 226 | argv_free(argv); |
227 | return NULL; | 227 | return NULL; |
228 | } | 228 | } |
229 | |||
230 | /* Glob expression pattern matching */ | ||
231 | bool strglobmatch(const char *str, const char *pat) | ||
232 | { | ||
233 | while (*str && *pat && *pat != '*') { | ||
234 | if (*pat == '?') { | ||
235 | str++; | ||
236 | pat++; | ||
237 | } else | ||
238 | if (*str++ != *pat++) | ||
239 | return false; | ||
240 | } | ||
241 | /* Check wild card */ | ||
242 | if (*pat == '*') { | ||
243 | while (*pat == '*') | ||
244 | pat++; | ||
245 | if (!*pat) /* Tail wild card matches all */ | ||
246 | return true; | ||
247 | while (*str) | ||
248 | if (strglobmatch(str++, pat)) | ||
249 | return true; | ||
250 | } | ||
251 | return !*str && !*pat; | ||
252 | } | ||
253 | |||