diff options
| -rw-r--r-- | apt-pkg/cacheiterators.h | 1 | ||||
| -rw-r--r-- | apt-pkg/pkgcache.cc | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 31ce1b295..38b4b8635 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -330,6 +330,7 @@ class APT_PUBLIC pkgCache::DepIterator : public Iterator<Dependency, DepIterator but change architecture nonetheless as a Conflicts: foo does applies for all archs */ bool IsImplicit() const APT_PURE; + bool IsSatisfied(PkgIterator const &Pkg) const APT_PURE; bool IsSatisfied(VerIterator const &Ver) const APT_PURE; bool IsSatisfied(PrvIterator const &Prv) const APT_PURE; void GlobOr(DepIterator &Start,DepIterator &End); diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index bccd7798f..1f1aadf59 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -776,6 +776,13 @@ bool pkgCache::DepIterator::IsIgnorable(PrvIterator const &Prv) const } /*}}}*/ // DepIterator::IsSatisfied - check if a version satisfied the dependency /*{{{*/ +bool pkgCache::DepIterator::IsSatisfied(PkgIterator const &Pkg) const +{ + for (auto ver = Pkg.VersionList(); not ver.end(); ++ver) + if (not IsSatisfied(ver)) + return false; + return not Pkg.VersionList().end(); +} bool pkgCache::DepIterator::IsSatisfied(VerIterator const &Ver) const { return Owner->VS->CheckDep(Ver.VerStr(),S2->CompareOp,TargetVer()); |
