#ifdef ENABLE_LINKED_PKGS
-void
+static void
find_application_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp)
{
Id req = 0;
*prvidp = prv;
}
-void
+static void
find_product_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp)
{
Id p, pp, namerelid;
*prvidp = solvable_selfprovidedep(s);
}
-void
+static void
find_pattern_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp)
{
Id p, pp, *pr, apevr = 0, aprel = 0;
*prvidp = aprel;
}
-/* the following two functions are used in solvable_lookup_str_base to do
+/* the following function is used in solvable_lookup_str_base to do
* translated lookups on the product/pattern packages
*/
Id
-find_autopattern_name(Pool *pool, Solvable *s)
+find_autopackage_name(Pool *pool, Solvable *s)
{
+ const char *autoprv = 0;
+ const char *n = pool_id2str(pool, s->name);
Id prv, *prvp;
- if (!s->provides)
- return 0;
- for (prvp = s->repo->idarraydata + s->provides; (prv = *prvp++) != 0; )
- if (ISRELDEP(prv))
- {
- Reldep *rd = GETRELDEP(pool, prv);
- if (rd->flags == REL_EQ && !strcmp(pool_id2str(pool, rd->name), "autopattern()"))
- return strncmp(pool_id2str(pool, rd->evr), "pattern:", 8) != 0 ? rd->evr : 0;
- }
- return 0;
-}
-Id
-find_autoproduct_name(Pool *pool, Solvable *s)
-{
- Id prv, *prvp;
- if (!s->provides)
+ if (*n == 'p')
+ {
+ if (!strncmp("pattern:", n, 8))
+ autoprv = "autopattern()";
+ if (!strncmp("product:", n, 8))
+ autoprv = "autoproduct()";
+ }
+ if (!autoprv)
return 0;
for (prvp = s->repo->idarraydata + s->provides; (prv = *prvp++) != 0; )
if (ISRELDEP(prv))
{
Reldep *rd = GETRELDEP(pool, prv);
- if (rd->flags == REL_EQ && !strcmp(pool_id2str(pool, rd->name), "autoproduct()"))
- return strncmp(pool_id2str(pool, rd->evr), "product:", 8) != 0 ? rd->evr : 0;
+ if (rd->flags == REL_EQ && !strcmp(pool_id2str(pool, rd->name), autoprv))
+ return rd->evr;
}
return 0;
}