diff options
| author | Julian Andres Klode <jak@debian.org> | 2020-05-04 12:10:50 +0000 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2020-05-04 12:10:50 +0000 |
| commit | 2265697c83faa308408cbf7d78b10317228ebad6 (patch) | |
| tree | 9cce30181fd90f11bba30579072bf9b689dba664 /apt-private | |
| parent | 6e6a9331e6d27d371844ec98775619328526f33d (diff) | |
| parent | c4f85bcb8bee1b5e647c7e629f616cffc7d12bbc (diff) | |
Merge branch 'pu/wildcards' into 'master'
Reinstate * wildcards
See merge request apt-team/apt!118
Diffstat (limited to 'apt-private')
| -rw-r--r-- | apt-private/private-list.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/apt-private/private-list.cc b/apt-private/private-list.cc index f5c31bbcd..eee657c46 100644 --- a/apt-private/private-list.cc +++ b/apt-private/private-list.cc @@ -39,6 +39,7 @@ struct PackageSortAlphabetic /*{{{*/ class PackageNameMatcher : public Matcher { + static constexpr const char *const isfnmatch_strict = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+-.:*"; pkgCacheFile &cacheFile; public: explicit PackageNameMatcher(pkgCacheFile &cacheFile, const char **patterns) @@ -48,12 +49,12 @@ class PackageNameMatcher : public Matcher { std::string pattern = patterns[i]; APT::CacheFilter::Matcher *cachefilter = NULL; - if (pattern.size() > 0 && (pattern[0] == '?' || pattern[0] == '~')) - cachefilter = APT::CacheFilter::ParsePattern(pattern, &cacheFile).release(); - else if(_config->FindB("APT::Cmd::Use-Regexp", false) == true) + if(_config->FindB("APT::Cmd::Use-Regexp", false) == true) cachefilter = new APT::CacheFilter::PackageNameMatchesRegEx(pattern); - else + else if (pattern.find_first_not_of(isfnmatch_strict) == std::string::npos) cachefilter = new APT::CacheFilter::PackageNameMatchesFnmatch(pattern); + else + cachefilter = APT::CacheFilter::ParsePattern(pattern, &cacheFile).release(); if (cachefilter == nullptr) { return; |
