summaryrefslogtreecommitdiff
path: root/apt-pkg/algorithms.cc
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-08-19 08:50:57 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-08-19 08:50:57 +0000
commit331956f9b59c8c30cce977e8729991559d46005c (patch)
tree8f51aa68a5991e84e93552400180277e8c5d0494 /apt-pkg/algorithms.cc
parent2a7e07c7578048abd9f7bfd4ce0ca5c3696b9f3a (diff)
* added a InRootSetFunc class for clients to add own packages to the mark'n'sweep root set
Diffstat (limited to 'apt-pkg/algorithms.cc')
-rw-r--r--apt-pkg/algorithms.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 3978e7561..82ea19c93 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -1342,8 +1342,14 @@ pkgMarkAlwaysInclude(pkgCache::PkgIterator p, vector<regex_t*> alwaysMark)
return false;
}
+bool pkgMarkUsed(pkgDepCache &Cache)
+{
+ InRootSetFunc f;
+ return pkgMarkUsed(Cache, f);
+}
+
// the main mark algorithm
-bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc func)
+bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc &userFunc)
{
bool follow_recommends;
bool follow_suggests;
@@ -1394,7 +1400,7 @@ bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc func)
// do the mark part, this is the core bit of the algorithm
for(pkgCache::PkgIterator p=Cache.PkgBegin(); !p.end(); ++p)
{
- if( (func != NULL ? (*func)(p) : false) ||
+ if( userFunc.InRootSet(p) ||
pkgMarkAlwaysInclude(p, neverAutoRemoveRegexp) ||
!(Cache[p].Flags & pkgCache::Flag::Auto) ||
(p->Flags & pkgCache::Flag::Essential))