]> git.saurik.com Git - apt.git/blame - apt-pkg/cachefilter.cc
merged r1970 lp:~vorlon/apt/lp.968828
[apt.git] / apt-pkg / cachefilter.cc
CommitLineData
9ba5aa3b
DK
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
3/** \file cachefilter.h
4 Collection of functor classes */
5 /*}}}*/
6// Include Files /*{{{*/
ea542140
DK
7#include <config.h>
8
9ba5aa3b
DK
9#include <apt-pkg/cachefilter.h>
10#include <apt-pkg/error.h>
11#include <apt-pkg/pkgcache.h>
12
13#include <apti18n.h>
14
15#include <string>
16
17#include <regex.h>
18 /*}}}*/
19namespace APT {
20namespace CacheFilter {
dcaa1185 21PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::string const &Pattern) : d(NULL) {/*{{{*/
9ba5aa3b
DK
22 pattern = new regex_t;
23 int const Res = regcomp(pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB);
24 if (Res == 0)
25 return;
26
27 delete pattern;
28 pattern = NULL;
29 char Error[300];
30 regerror(Res, pattern, Error, sizeof(Error));
31 _error->Error(_("Regex compilation error - %s"), Error);
32}
33 /*}}}*/
34bool PackageNameMatchesRegEx::operator() (pkgCache::PkgIterator const &Pkg) {/*{{{*/
35 if (unlikely(pattern == NULL))
36 return false;
37 else
38 return regexec(pattern, Pkg.Name(), 0, 0, 0) == 0;
39}
40 /*}}}*/
41bool PackageNameMatchesRegEx::operator() (pkgCache::GrpIterator const &Grp) {/*{{{*/
42 if (unlikely(pattern == NULL))
43 return false;
44 else
45 return regexec(pattern, Grp.Name(), 0, 0, 0) == 0;
46}
47 /*}}}*/
48PackageNameMatchesRegEx::~PackageNameMatchesRegEx() { /*{{{*/
49 if (pattern == NULL)
50 return;
51 regfree(pattern);
52 delete pattern;
53}
54 /*}}}*/
55}
56}