Blob Blame History Raw
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"),