X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/d22bcfc4b0b2d0056126a1c690f778b1c3ddaf17..3bb98bee11b38df0264099f3c9e858880759999d:/apt-pkg/depcache.cc?ds=sidebyside diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index ac667d51d..ca9636cc1 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -23,6 +23,8 @@ #include #include +#include + #include pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) : @@ -176,7 +178,7 @@ bool pkgDepCache::readStateFile(OpProgress *Prog) return true; } -bool pkgDepCache::writeStateFile(OpProgress *prog) +bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly) { if(_config->FindB("Debug::pkgAutoRemove",false)) std::clog << "pkgDepCache::writeStateFile()" << std::endl; @@ -238,6 +240,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog) std::clog << "Skipping already written " << pkg.Name() << std::endl; continue; } + // skip not installed ones if requested + if(InstalledOnly && pkg->CurrentVer == 0) + continue; if(_config->FindB("Debug::pkgAutoRemove",false)) std::clog << "Writing new AutoInstall: " << pkg.Name() << std::endl; @@ -250,8 +255,9 @@ bool pkgDepCache::writeStateFile(OpProgress *prog) } fclose(OutFile); - // move the outfile over the real file + // move the outfile over the real file and set permissions rename(outfile.c_str(), state.c_str()); + chmod(state.c_str(), 0644); return true; } @@ -1144,7 +1150,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep) string s = _config->Find("APT::Install-Recommends-Section",""); if(s.size() > 0) { - const char *sec = Dep.TargetPkg().Section(); + const char *sec = Dep.ParentVer().Section(); if (sec && strcmp(sec, s.c_str()) == 0) return true; } @@ -1372,3 +1378,4 @@ bool pkgDepCache::Sweep() return true; } +