Imported Upstream version 0.6.9
[platform/upstream/libsolv.git] / src / solver_private.h
index 43bc66e..f30b03a 100644 (file)
@@ -17,7 +17,7 @@ extern void solver_run_sat(Solver *solv, int disablerules, int doweak);
 extern void solver_reset(Solver *solv);
 
 extern int solver_dep_installed(Solver *solv, Id dep);
-extern int solver_splitprovides(Solver *solv, Id dep);
+extern int solver_splitprovides(Solver *solv, Id dep, Map *m);
 
 static inline int
 solver_dep_fulfilled(Solver *solv, Id dep)
@@ -28,14 +28,20 @@ solver_dep_fulfilled(Solver *solv, Id dep)
   if (ISRELDEP(dep))
     {
       Reldep *rd = GETRELDEP(pool, dep);
-      if (rd->flags == REL_AND)
+      if (rd->flags == REL_AND || rd->flags == REL_COND)
         {
           if (!solver_dep_fulfilled(solv, rd->name))
             return 0;
           return solver_dep_fulfilled(solv, rd->evr);
         }
+      if (rd->flags == REL_OR)
+       {
+          if (solver_dep_fulfilled(solv, rd->name))
+           return 1;
+          return solver_dep_fulfilled(solv, rd->evr);
+       }
       if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_SPLITPROVIDES)
-        return solver_splitprovides(solv, rd->evr);
+        return solver_splitprovides(solv, rd->evr, 0);
       if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_INSTALLED)
         return solver_dep_installed(solv, rd->evr);
     }