- add repo_free_repodata to remove a repodata from a repo
authorMichael Schroeder <mls@suse.de>
Wed, 8 Jul 2009 16:10:00 +0000 (18:10 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 8 Jul 2009 16:10:00 +0000 (18:10 +0200)
src/repo.c
src/repo.h

index 494896e..25e07ff 100644 (file)
@@ -987,6 +987,16 @@ repo_last_repodata(Repo *repo)
 }
 
 void
+repo_free_repodata(Repo *repo, Repodata *data)
+{
+  int i = data - repo->repodata;
+  repodata_free(data);
+  if (i < repo->nrepodata - 1)
+    memmove(repo->repodata + i, repo->repodata + i + 1, (repo->nrepodata - 1 - i) * sizeof(Repodata));
+  repo->nrepodata--;
+}
+
+void
 repo_set_id(Repo *repo, Id p, Id keyname, Id id)
 {
   Repodata *data = repo_last_repodata(repo);
index 5a8c015..d61e5c9 100644 (file)
@@ -174,6 +174,7 @@ typedef struct _KeyValue {
 
 Repodata *repo_add_repodata(Repo *repo, int localpool);
 Repodata *repo_last_repodata(Repo *repo);
+void repo_free_repodata(Repo *repo, Repodata *data);
 
 void repo_search(Repo *repo, Id p, Id key, const char *match, int flags, int (*callback)(void *cbdata, Solvable *s, Repodata *data, Repokey *key, KeyValue *kv), void *cbdata);