return 0;
}
+
+/*
+ * generic attribute lookup
+ * returns non-zero if found
+ * zero if not found
+ */
+
+int
+repo_lookup(Solvable *s, Id key, int (*callback)(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv), void *cbdata)
+{
+ Repo *repo = s->repo;
+ Pool *pool = repo->pool;
+ Repodata *data;
+ int i, s_id;
+
+ s_id = s - pool->solvables;
+ for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
+ {
+ if (s_id < data->start || s_id >= data->end)
+ continue;
+ repodata_search (data, s_id - data->start, key, callback, cbdata);
+ return 1;
+ }
+ return 0;
+}
+
+
Repodata *
repo_add_repodata(Repo *repo)
{
const char * repo_lookup_str(Solvable *s, Id key);
/* returns the integer value of the attribute, or 0 if not found */
int repo_lookup_num(Solvable *s, Id key);
+/* generic attribute lookup */
+int repo_lookup(Solvable *s, Id key, int (*callback)(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv), void *cbdata);
+
void repo_set_id(Repo *repo, Id p, Id keyname, Id id);
void repo_set_num(Repo *repo, Id p, Id keyname, Id num);