summaryrefslogtreecommitdiff
path: root/cmdline
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2010-07-17 19:07:00 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2010-07-17 19:07:00 +0200
commit9ba5aa3b01f1f7c08c74f5d0a21971db221d30f1 (patch)
treed2b12bb5b382c36aeaf6872241e75a2b25923fe7 /cmdline
parentfe1af091b871f9af715d729e515f2e3a62802c6f (diff)
factor regex package name matches into newly created cachefilter classes
Diffstat (limited to 'cmdline')
-rw-r--r--cmdline/cacheset.cc18
1 files changed, 5 insertions, 13 deletions
diff --git a/cmdline/cacheset.cc b/cmdline/cacheset.cc
index 78c9d3f6c..0b099f442 100644
--- a/cmdline/cacheset.cc
+++ b/cmdline/cacheset.cc
@@ -10,6 +10,7 @@
/*}}}*/
// Include Files /*{{{*/
#include <apt-pkg/aptconfiguration.h>
+#include <apt-pkg/cachefilter.h>
#include <apt-pkg/error.h>
#include <apt-pkg/strutl.h>
#include <apt-pkg/versionmatch.h>
@@ -97,22 +98,14 @@ PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, Cache
arch = "native";
}
- regex_t Pattern;
- int Res;
- if ((Res = regcomp(&Pattern, pattern.c_str() , REG_EXTENDED | REG_ICASE | REG_NOSUB)) != 0) {
- char Error[300];
- regerror(Res, &Pattern, Error, sizeof(Error));
- _error->Error(_("Regex compilation error - %s"), Error);
- return PackageSet(REGEX);
- }
-
if (unlikely(Cache.GetPkgCache() == 0))
return PackageSet(REGEX);
+ APT::CacheFilter::PackageNameMatchesRegEx regexfilter(pattern);
+
PackageSet pkgset(REGEX);
- for (pkgCache::GrpIterator Grp = Cache.GetPkgCache()->GrpBegin(); Grp.end() == false; ++Grp)
- {
- if (regexec(&Pattern, Grp.Name(), 0, 0, 0) != 0)
+ for (pkgCache::GrpIterator Grp = Cache.GetPkgCache()->GrpBegin(); Grp.end() == false; ++Grp) {
+ if (regexfilter(Grp) == false)
continue;
pkgCache::PkgIterator Pkg = Grp.FindPkg(arch);
if (Pkg.end() == true) {
@@ -128,7 +121,6 @@ PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, Cache
pkgset.insert(Pkg);
}
- regfree(&Pattern);
if (pkgset.empty() == true)
return helper.canNotFindRegEx(Cache, pattern);