mirror of
https://github.com/openSUSE/libsolv.git
synced 2026-02-05 12:45:46 +01:00
also translate autoproduct strings
This commit is contained in:
@@ -212,6 +212,9 @@ find_pattern_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Qu
|
||||
*prvidp = aprel;
|
||||
}
|
||||
|
||||
/* the following two functions are used in solvable_lookup_str_base to do
|
||||
* translated lookups on the product/pattern packages
|
||||
*/
|
||||
Id
|
||||
find_autopattern_name(Pool *pool, Solvable *s)
|
||||
{
|
||||
@@ -228,6 +231,22 @@ find_autopattern_name(Pool *pool, Solvable *s)
|
||||
return 0;
|
||||
}
|
||||
|
||||
Id
|
||||
find_autoproduct_name(Pool *pool, Solvable *s)
|
||||
{
|
||||
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), "autoproduct()"))
|
||||
return strncmp(pool_id2str(pool, rd->evr), "product:", 8) != 0 ? rd->evr : 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
find_package_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp)
|
||||
{
|
||||
|
||||
@@ -30,6 +30,7 @@ extern void find_product_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id
|
||||
extern void find_pattern_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp);
|
||||
|
||||
extern Id find_autopattern_name(Pool *pool, Solvable *s);
|
||||
extern Id find_autoproduct_name(Pool *pool, Solvable *s);
|
||||
|
||||
/* generic */
|
||||
extern void find_package_link(Pool *pool, Solvable *s, Id *reqidp, Queue *qr, Id *prvidp, Queue *qp);
|
||||
|
||||
@@ -172,9 +172,18 @@ solvable_lookup_str_base(Solvable *s, Id keyname, Id basekeyname, int usebase)
|
||||
return str;
|
||||
}
|
||||
#ifdef ENABLE_LINKED_PKGS
|
||||
/* autopattern translation magic */
|
||||
if (pass && !strncmp("pattern:", pool_id2str(pool, name), 8) && (name = find_autopattern_name(pool, s)) != 0)
|
||||
pass = -1;
|
||||
/* autopattern/product translation magic */
|
||||
if (pass)
|
||||
{
|
||||
const char *n = pool_id2str(pool, name);
|
||||
if (*n == 'p')
|
||||
{
|
||||
if (!strncmp("pattern:", n, 8) && (name = find_autopattern_name(pool, s)) != 0)
|
||||
pass = -1;
|
||||
if (!strncmp("product:", n, 8) && (name = find_autoproduct_name(pool, s)) != 0)
|
||||
pass = -1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return usebase ? basestr : 0;
|
||||
|
||||
Reference in New Issue
Block a user