add pool_setnamespacecallback() and pool_flush_namespaceproviders()
authorMichael Schroeder <mls@suse.de>
Mon, 22 Apr 2013 09:36:19 +0000 (11:36 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 22 Apr 2013 09:36:19 +0000 (11:36 +0200)
src/libsolv.ver
src/pool.c
src/pool.h

index a0115df..1f21e4a 100644 (file)
@@ -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;
index ffe1fef..869aa43 100644 (file)
@@ -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 {
index 6545b49..f94940f 100644 (file)
@@ -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 *));