From: Michael Schroeder Date: Mon, 22 Apr 2013 09:36:19 +0000 (+0200) Subject: add pool_setnamespacecallback() and pool_flush_namespaceproviders() X-Git-Tag: BASE-SuSE-Code-12_3-Branch~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c72660aabce1001e3da01ad0e5c6b166a73d71f;p=thirdparty%2Flibsolv.git add pool_setnamespacecallback() and pool_flush_namespaceproviders() --- diff --git a/src/libsolv.ver b/src/libsolv.ver index a0115dfc..1f21e4ac 100644 --- a/src/libsolv.ver +++ b/src/libsolv.ver @@ -61,6 +61,7 @@ SOLV_1.0 { pool_evrcmp; pool_evrcmp_str; pool_evrmatch; + pool_flush_namespaceproviders; pool_free; pool_freeallrepos; pool_freeidhashes; @@ -102,6 +103,7 @@ SOLV_1.0 { pool_setdebugmask; pool_setdisttype; pool_setloadcallback; + pool_setnamespacecallback; pool_setvendorclasses; pool_shrink_rels; pool_shrink_strings; diff --git a/src/pool.c b/src/pool.c index ffe1fefc..869aa43e 100644 --- a/src/pool.c +++ b/src/pool.c @@ -895,6 +895,27 @@ pool_addrelproviders(Pool *pool, Id d) return pool->whatprovides_rel[d]; } +void +pool_flush_namespaceproviders(Pool *pool, Id ns, Id evr) +{ + int nrels = pool->nrels; + Id d; + Reldep *rd; + + if (!pool->whatprovides_rel) + return; + for (d = 1, rd = pool->rels + d; d < nrels; d++, rd++) + { + if (rd->flags != REL_NAMESPACE || rd->name == NAMESPACE_OTHERPROVIDERS) + continue; + if (ns && rd->name != ns) + continue; + if (evr && rd->evr != evr) + continue; + pool->whatprovides_rel[d] = 0; + } +} + /*************************************************************************/ void @@ -995,6 +1016,12 @@ void pool_setloadcallback(Pool *pool, int (*cb)(struct _Pool *, struct _Repodata pool->loadcallbackdata = loadcbdata; } +void pool_setnamespacecallback(Pool *pool, Id (*cb)(struct _Pool *, void *, Id, Id), void *nscbdata) +{ + pool->nscallback = cb; + pool->nscallbackdata = nscbdata; +} + /*************************************************************************/ struct searchfiles { diff --git a/src/pool.h b/src/pool.h index 6545b499..f94940fe 100644 --- a/src/pool.h +++ b/src/pool.h @@ -225,6 +225,9 @@ extern void pool_debug(Pool *pool, int type, const char *format, ...) __attribut extern void pool_setdebugcallback(Pool *pool, void (*debugcallback)(struct _Pool *, void *data, int type, const char *str), void *debugcallbackdata); extern void pool_setdebugmask(Pool *pool, int mask); extern void pool_setloadcallback(Pool *pool, int (*cb)(struct _Pool *, struct _Repodata *, void *), void *loadcbdata); +extern void pool_setnamespacecallback(Pool *pool, Id (*cb)(struct _Pool *, void *, Id, Id), void *nscbdata); +extern void pool_flush_namespaceproviders(Pool *pool, Id ns, Id evr); + extern void pool_set_custom_vendorcheck(Pool *pool, int (*vendorcheck)(struct _Pool *, Solvable *, Solvable *));