- repomd filelists/other.xml version parsing was totally busted, fix it
authorPanu Matilainen <pmatilai@turre.koti.laiskiainen.org>
Tue, 6 Mar 2007 20:21:08 +0000 (22:21 +0200)
committerPanu Matilainen <pmatilai@turre.koti.laiskiainen.org>
Tue, 6 Mar 2007 20:21:08 +0000 (22:21 +0200)
apt-pkg/rpm/rpmhandler.cc
apt-pkg/rpm/rpmhandler.h

index be4d12f..8c063e1 100644 (file)
@@ -1391,15 +1391,29 @@ bool RPMRepomdReaderHandler::Skip()
 
 string RPMRepomdReaderHandler::FindTag(char *Tag)
 {
-     string str = "";
-     if (NodeP) {
-         xmlChar *attr = xmlGetProp(NodeP, (xmlChar*)Tag);
-         if (attr) {
-            str = (char*)attr;
-            xmlFree(attr);
-         }
-     }
-     return str;
+   string str = "";
+   if (NodeP) {
+       xmlChar *attr = xmlGetProp(NodeP, (xmlChar*)Tag);
+       if (attr) {
+          str = (char*)attr;
+          xmlFree(attr);
+       }
+   }
+   return str;
+}
+
+string RPMRepomdReaderHandler::FindVerTag(char *Tag)
+{
+   string str = "";
+   for (xmlNode *n = NodeP->children; n; n = n->next) {
+      if (xmlStrcmp(n->name, (xmlChar*)"version") != 0)  continue;
+      xmlChar *attr = xmlGetProp(n, (xmlChar*)Tag);
+      if (attr) {
+        str = (char*)attr;
+        xmlFree(attr);
+      }
+   }
+   return str;
 }
 
 RPMRepomdReaderHandler::~RPMRepomdReaderHandler()
index f9d3ab6..073acf5 100644 (file)
@@ -333,6 +333,7 @@ class RPMRepomdReaderHandler : public RPMHandler
    xmlNode *NodeP;
 
    string FindTag(char *Tag);
+   string FindVerTag(char *Tag);
 
    public:
    virtual bool Skip();
@@ -349,9 +350,9 @@ class RPMRepomdReaderHandler : public RPMHandler
 
    virtual string Name() {return FindTag("name");};
    virtual string Arch() {return FindTag("arch");};
-   virtual string Epoch() {return FindTag("epoch");};
-   virtual string Version() {return FindTag("version");};
-   virtual string Release() {return FindTag("release");};
+   virtual string Epoch() {return FindVerTag("epoch");};
+   virtual string Version() {return FindVerTag("ver");};
+   virtual string Release() {return FindVerTag("rel");};
 
    virtual string Group() {return "";};
    virtual string Packager() {return "";};