return pool->custom_vendorcheck;
}
+static int
+pool_dep_fulfilled_in_map_cplx(Pool *pool, const Map *map, Reldep *rd)
+{
+ if (rd->flags == REL_COND)
+ {
+ if (ISRELDEP(rd->evr))
+ {
+ Reldep *rd2 = GETRELDEP(pool, rd->evr);
+ if (rd2->flags == REL_ELSE)
+ {
+ if (pool_dep_fulfilled_in_map(pool, map, rd2->name))
+ return pool_dep_fulfilled_in_map(pool, map, rd->name);
+ return pool_dep_fulfilled_in_map(pool, map, rd2->evr);
+ }
+ }
+ if (pool_dep_fulfilled_in_map(pool, map, rd->name))
+ return 1;
+ return !pool_dep_fulfilled_in_map(pool, map, rd->evr);
+ }
+ if (rd->flags == REL_UNLESS)
+ {
+ if (ISRELDEP(rd->evr))
+ {
+ Reldep *rd2 = GETRELDEP(pool, rd->evr);
+ if (rd2->flags == REL_ELSE)
+ {
+ if (!pool_dep_fulfilled_in_map(pool, map, rd2->name))
+ return pool_dep_fulfilled_in_map(pool, map, rd->name);
+ return pool_dep_fulfilled_in_map(pool, map, rd2->evr);
+ }
+ }
+ if (!pool_dep_fulfilled_in_map(pool, map, rd->name))
+ return 0;
+ return !pool_dep_fulfilled_in_map(pool, map, rd->evr);
+ }
+ if (rd->flags == REL_AND)
+ {
+ if (!pool_dep_fulfilled_in_map(pool, map, rd->name))
+ return 0;
+ return pool_dep_fulfilled_in_map(pool, map, rd->evr);
+ }
+ if (rd->flags == REL_OR)
+ {
+ if (pool_dep_fulfilled_in_map(pool, map, rd->name))
+ return 1;
+ return pool_dep_fulfilled_in_map(pool, map, rd->evr);
+ }
+ return 0;
+}
+
+
+int pool_dep_fulfilled_in_map(Pool *pool, const Map *map, Id dep)
+{
+ Id p, pp;
+
+ if (ISRELDEP(dep)) {
+ Reldep *rd = GETRELDEP(pool, dep);
+ if (rd->flags == REL_COND || rd->flags == REL_UNLESS ||
+ rd->flags == REL_AND || rd->flags == REL_OR)
+ return pool_dep_fulfilled_in_map_cplx(pool, map, rd);
+ if (rd->flags == REL_NAMESPACE && rd->name == NAMESPACE_SPLITPROVIDES)
+ return 0;
+ }
+ FOR_PROVIDES(p, pp, dep) {
+ if (MAPTST(map, p))
+ return 1;
+ }
+ return 0;
+}
+
/* EOF */
int pool_intersect_evrs(Pool *pool, int pflags, Id pevr, int flags, Id evr);
int pool_match_dep(Pool *pool, Id d1, Id d2);
+int pool_dep_fulfilled_in_map(Pool *pool, const Map *map, Id dep);
/* semi private, used in pool_match_nevr */
int pool_match_nevr_rel(Pool *pool, Solvable *s, Id d);