#endif
+void pool_search(Pool *pool, Id p, Id key, const char *match, int flags, int (*callback)(void *cbdata, Solvable *s, struct _Repodata *data, struct _Repokey *key, struct _KeyValue *kv), void *cbdata)
+{
+ if (p)
+ {
+ if (pool->solvables[p].repo)
+ repo_search(pool->solvables[p].repo, p, key, match, flags, callback, cbdata);
+ return;
+ }
+ /* FIXME: obey callback return value! */
+ for (p = 1; p < pool->nsolvables; p++)
+ if (pool->solvables[p].repo)
+ repo_search(pool->solvables[p].repo, p, key, match, flags, callback, cbdata);
+}
+
// EOF
struct _Repo;
struct _Repodata;
+struct _Repokey;
+struct _KeyValue;
struct _Pool {
struct _Stringpool ss;
pool->loadcallbackdata = loadcbdata;
}
+/* search the pool. the following filters are available:
+ * p - search just this solvable
+ * key - search only this key
+ * match - key must match this string
+ */
+void pool_search(Pool *pool, Id p, Id key, const char *match, int flags, int (*callback)(void *cbdata, Solvable *s, struct _Repodata *data, struct _Repokey *key, struct _KeyValue *kv), void *cbdata);
+
/* loop over all providers of d */
#define FOR_PROVIDES(v, vp, d) \
for (vp = pool_whatprovides(pool, d) ; (v = *vp++) != 0; )