- new handler method DepOp() for handling RPMSENSE_* to pkgCache::Dep::*
authorpmatilai <pmatilai>
Wed, 6 Sep 2006 19:46:38 +0000 (19:46 +0000)
committerpmatilai <pmatilai>
Wed, 6 Sep 2006 19:46:38 +0000 (19:46 +0000)
  conversions in one place
- make InternalDep() protected, nothing outside the handler needs it

apt-pkg/rpm/rpmhandler.cc
apt-pkg/rpm/rpmhandler.h

index 1d608c9..f8806c7 100644 (file)
@@ -105,6 +105,32 @@ string RPMHandler::EVR()
    return evr;
 } 
 
+unsigned int RPMHandler::DepOp(int_32 rpmflags)
+{
+   unsigned int Op = 0;
+   int_32 flags = (rpmflags & RPMSENSE_SENSEMASK);
+   if (flags == RPMSENSE_ANY) {
+      Op = pkgCache::Dep::NoOp;
+   } else if (flags & RPMSENSE_LESS) {
+      if (flags & RPMSENSE_EQUAL)
+         Op = pkgCache::Dep::LessEq;
+      else
+         Op = pkgCache::Dep::Less;
+   } else if (flags & RPMSENSE_GREATER) {
+      if (flags & RPMSENSE_EQUAL)
+         Op = pkgCache::Dep::GreaterEq;
+      else
+         Op = pkgCache::Dep::Greater;
+   } else if (flags & RPMSENSE_EQUAL) {
+      Op = pkgCache::Dep::Equals;
+   } else {
+      /* can't happen, right? */
+      _error->Error(_("Impossible flags %d in %s"), rpmflags, Name().c_str());
+   }
+      
+   return Op;
+}
+
 bool RPMHandler::HasFile(const char *File)
 {
    if (*File == '\0')
@@ -299,7 +325,6 @@ bool RPMHandler::Depends(unsigned int Type, vector<Dependency*> &Deps)
    verl = (char**)verval;
    flagl = (int*)flagval;
 
-   unsigned int Op = 0;
    bool DepMode = false;
    if (Type == pkgCache::Dep::Depends)
       DepMode = true;
@@ -328,24 +353,7 @@ bool RPMHandler::Depends(unsigned int Type, vector<Dependency*> &Deps)
         Dep->Version = Dep->Version.substr(2);
       }
 
-      if (!verl[i]) {
-         Op = pkgCache::Dep::NoOp;
-      } else {
-         if (flagl[i] & RPMSENSE_LESS) {
-            if (flagl[i] & RPMSENSE_EQUAL)
-                Op = pkgCache::Dep::LessEq;
-            else
-                Op = pkgCache::Dep::Less;
-         } else if (flagl[i] & RPMSENSE_GREATER) {
-            if (flagl[i] & RPMSENSE_EQUAL)
-                Op = pkgCache::Dep::GreaterEq;
-            else
-                Op = pkgCache::Dep::Greater;
-         } else if (flagl[i] & RPMSENSE_EQUAL) {
-            Op = pkgCache::Dep::Equals;
-        }
-      }
-      Dep->Op = Op;
+      Dep->Op = DepOp(flagl[i]);
       Dep->Type = Type;
       Deps.push_back(Dep);
    }
@@ -1168,7 +1176,6 @@ bool RPMRepomdHandler::Depends(unsigned int Type, vector<Dependency*> &Deps)
       return true;
    }
    for (xmlNode *n = dco->children; n; n = n->next) {
-      unsigned int Op = 0;
       int_32 RpmOp = 0;
       string deptype, depver;
       xmlChar *depname, *flags;
@@ -1196,25 +1203,19 @@ bool RPMRepomdHandler::Depends(unsigned int Type, vector<Dependency*> &Deps)
 
 
          if (deptype == "EQ") {
-            Op = pkgCache::Dep::Equals;
            RpmOp = RPMSENSE_EQUAL;
         } else if (deptype == "GE") {
-            Op = pkgCache::Dep::GreaterEq;
            RpmOp = RPMSENSE_GREATER | RPMSENSE_EQUAL;
         } else if (deptype == "GT") {
-            Op = pkgCache::Dep::Greater;
            RpmOp = RPMSENSE_GREATER;
         } else if (deptype == "LE") {
-            Op = pkgCache::Dep::LessEq;
            RpmOp = RPMSENSE_LESS | RPMSENSE_EQUAL;
         } else if (deptype == "LT") {
-            Op = pkgCache::Dep::Less;
            RpmOp = RPMSENSE_LESS;
         } else {
            // erm, unknown dependency type?
         }
       } else {
-        Op = pkgCache::Dep::NoOp;
         RpmOp = RPMSENSE_ANY;
       }
 
@@ -1237,7 +1238,7 @@ bool RPMRepomdHandler::Depends(unsigned int Type, vector<Dependency*> &Deps)
       }
 
       
-      Dep->Op = Op;
+      Dep->Op = DepOp(RpmOp);
       Dep->Type = Type;
       Deps.push_back(Dep);
    }
index 5fd05d3..5d5ccb9 100644 (file)
@@ -48,7 +48,6 @@ struct Dependency
    unsigned int Type;
 };
 
-
 class RPMHandler
 {
    protected:
@@ -60,7 +59,8 @@ class RPMHandler
 
    string GetSTag(rpmTag Tag);
    unsigned long GetITag(rpmTag Tag);
-
+   unsigned int DepOp(int_32 rpmflags);
+   bool InternalDep(const char *name, const char *ver, int_32 flag);
 
    public:
 
@@ -98,14 +98,12 @@ class RPMHandler
    virtual string SourceRpm() {return GetSTag(RPMTAG_SOURCERPM);};
    virtual bool IsSourceRpm() {return SourceRpm().empty();}
 
-   bool InternalDep(const char *name, const char *ver, int_32 flag);
    virtual bool Depends(unsigned int Type, vector<Dependency*> &Deps);
    virtual bool Provides(vector<Dependency*> &Provs);
    virtual bool FileList(vector<string> &FileList);
 
    virtual bool HasFile(const char *File);
 
-
    RPMHandler() : iOffset(0), iSize(0), HeaderP(0) {};
    virtual ~RPMHandler() {};
 };
@@ -157,8 +155,6 @@ class RPMSingleFileHandler : public RPMFileHandler
    virtual ~RPMSingleFileHandler() {};
 };
 
-
-
 class RPMDBHandler : public RPMHandler
 {
    protected: