commit 06f5fdb6e1ca0e1605522bcf47e244876a389701 Author: Panu Matilainen <pmatilai@redhat.com> Date: Wed Dec 31 12:41:38 2008 +0200 Look into provides when searching distrover pkg (rhbz#474911) diff --git a/apt-pkg/rpm/rpmhandler.cc b/apt-pkg/rpm/rpmhandler.cc index d101d10..3d4342d 100644 --- a/apt-pkg/rpm/rpmhandler.cc +++ b/apt-pkg/rpm/rpmhandler.cc @@ -905,11 +905,12 @@ bool RPMDBHandler::Jump(off_t Offset) return true; } -bool RPMDBHandler::JumpByName(string PkgName) +bool RPMDBHandler::JumpByName(string PkgName, bool Provides) { + raptTag tag = (raptTag)(Provides ? RPMTAG_PROVIDES : RPMDBI_LABEL); if (RpmIter == NULL) return false; rpmdbFreeIterator(RpmIter); - RpmIter = raptInitIterator(Handler, RPMDBI_LABEL, PkgName.c_str(), 0); + RpmIter = raptInitIterator(Handler, tag, PkgName.c_str(), 0); HeaderP = rpmdbNextIterator(RpmIter); return (HeaderP != NULL); } diff --git a/apt-pkg/rpm/rpmhandler.h b/apt-pkg/rpm/rpmhandler.h index 3d3fc3d..6c7c372 100644 --- a/apt-pkg/rpm/rpmhandler.h +++ b/apt-pkg/rpm/rpmhandler.h @@ -233,7 +233,7 @@ class RPMDBHandler : public RPMHdrHandler virtual bool OrderedOffset() {return false;} // used by rpmSystem::DistroVer() - bool JumpByName(string PkgName); + bool JumpByName(string PkgName, bool Provides=false); RPMDBHandler(bool WriteLock=false); virtual ~RPMDBHandler(); diff --git a/apt-pkg/rpm/rpmsystem.cc b/apt-pkg/rpm/rpmsystem.cc index 47ba1e1..f8245d4 100644 --- a/apt-pkg/rpm/rpmsystem.cc +++ b/apt-pkg/rpm/rpmsystem.cc @@ -210,7 +210,7 @@ string rpmSystem::DistroVer() return ""; string DistroVersion = ""; - if (RpmDB->JumpByName(DistroVerPkg) == true) { + if (RpmDB->JumpByName(DistroVerPkg, true) == true) { DistroVersion = RpmDB->Version(); } else { _error->Error(_("Unable to determine version for package %s"),