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