}
-bool pkgMarkUsed(pkgDepCache &Cache)
+bool pkgMarkUsed(pkgDepCache &Cache, InRootSetFunc func)
{
bool follow_recommends;
bool follow_suggests;
// init vars
follow_recommends=_config->FindB("APT::AutoRemove::RecommendsImportant",false);
- follow_suggests=_config->FindB("APT::AutoRemove::SuggestsImportend", false);
+ follow_suggests=_config->FindB("APT::AutoRemove::SuggestsImportant", false);
// do the mark part
for(pkgCache::PkgIterator p=Cache.PkgBegin(); !p.end(); ++p)
{
- if(!(Cache[p].Flags & pkgCache::Flag::Auto) ||
- (p->Flags & pkgCache::Flag::Essential))
+ if( (func != NULL ? (*func)(p) : false) ||
+ !(Cache[p].Flags & pkgCache::Flag::Auto) ||
+ (p->Flags & pkgCache::Flag::Essential))
+
{
if(Cache[p].Keep() && !p.CurrentVer().end())
pkgMarkPackage(Cache, p, p.CurrentVer(),