From 2b400c17febadf2b05aa88d9e6cdca882544a6cb Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 14 Jun 2011 11:55:37 +0200 Subject: [PATCH] - use FOR_REPODATAS macro --- ext/repo_susetags.c | 3 ++- ext/repo_write.c | 15 +++++++-------- src/pool.c | 2 +- src/pool.h | 4 ++-- src/repo.c | 22 +++++++++++----------- src/repo.h | 3 +++ tools/common_write.c | 2 +- tools/dumpsolv.c | 2 +- tools/installcheck.c | 2 +- tools/patchcheck.c | 10 +++++++--- 10 files changed, 36 insertions(+), 29 deletions(-) diff --git a/ext/repo_susetags.c b/ext/repo_susetags.c index 80ea304..a8646c6 100644 --- a/ext/repo_susetags.c +++ b/ext/repo_susetags.c @@ -586,7 +586,8 @@ repo_add_susetags(Repo *repo, FILE *fp, Id defvendor, const char *language, int { Repodata *sdata; int i; - for (i = 0, sdata = repo->repodata; i < repo->nrepodata; i++, sdata++) + + FOR_REPODATAS(repo, i, sdata) { int p; if (!repodata_has_keyname(sdata, SUSETAGS_SHARE_NAME)) diff --git a/ext/repo_write.c b/ext/repo_write.c index ece080c..0efb346 100644 --- a/ext/repo_write.c +++ b/ext/repo_write.c @@ -1023,8 +1023,8 @@ repo_write(Repo *repo, FILE *fp, int (*keyfilter)(Repo *repo, Repokey *key, void /* start with all KEY_STORAGE_SOLVABLE ids */ n = ID_NUM_INTERNAL; - for (i = 0; i < repo->nrepodata; i++) - n += repo->repodata[i].nkeys; + FOR_REPODATAS(repo, i, data) + n += data->nkeys; cbdata.keymap = sat_calloc(n, sizeof(Id)); cbdata.keymapstart = sat_calloc(repo->nrepodata, sizeof(Id)); repodataused = sat_calloc(repo->nrepodata, 1); @@ -1073,9 +1073,8 @@ repo_write(Repo *repo, FILE *fp, int (*keyfilter)(Repo *repo, Repokey *key, void dirpool = 0; dirpooldata = 0; n = ID_NUM_INTERNAL; - for (i = 0; i < repo->nrepodata; i++) + FOR_REPODATAS(repo, i, data) { - data = repo->repodata + i; cbdata.keymapstart[i] = n; cbdata.keymap[n++] = 0; /* key 0 */ idused = 0; @@ -1294,7 +1293,7 @@ for (i = 1; i < target.nkeys; i++) cbdata.sp = cbdata.schema; /* collect all other data from all repodatas */ /* XXX: merge arrays of equal keys? */ - for (j = 0, data = repo->repodata; j < repo->nrepodata; j++, data++) + FOR_REPODATAS(repo, j, data) { if (!repodataused[j]) continue; @@ -1390,7 +1389,7 @@ for (i = 1; i < target.nkeys; i++) if (anyrepodataused) { - for (j = 0, data = repo->repodata; j < repo->nrepodata; j++, data++) + FOR_REPODATAS(repo, j, data) { if (!repodataused[j]) continue; @@ -1628,7 +1627,7 @@ fprintf(stderr, "dir %d used %d\n", i, cbdata.dirused ? cbdata.dirused[i] : 1); data_addid(xd, mainschema); #if 1 - for (j = 0, data = repo->repodata; j < repo->nrepodata; j++, data++) + FOR_REPODATAS(repo, j, data) { if (!repodataused[j]) continue; @@ -1678,7 +1677,7 @@ fprintf(stderr, "dir %d used %d\n", i, cbdata.dirused ? cbdata.dirused[i] : 1); if (anyrepodataused) { cbdata.vstart = -1; - for (j = 0, data = repo->repodata; j < repo->nrepodata; j++, data++) + FOR_REPODATAS(repo, j, data) { if (!repodataused[j]) continue; diff --git a/src/pool.c b/src/pool.c index ee65813..e9035a1 100644 --- a/src/pool.c +++ b/src/pool.c @@ -980,7 +980,7 @@ pool_addfileprovides_search(Pool *pool, struct addfileprovides_cbdata *cbd, stru continue; } ndone = 0; - for (data = repo->repodata, repodataid = 0; repodataid < repo->nrepodata; repodataid++, data++) + FOR_REPODATAS(repo, repodataid, data) { if (ndone >= repo->nsolvables) break; diff --git a/src/pool.h b/src/pool.h index fa701bf..4c53bfa 100644 --- a/src/pool.h +++ b/src/pool.h @@ -69,12 +69,12 @@ struct _Pool { Hashmask relhashmask; struct _Repo **repos; - int nrepos; + int nrepos; /* repos allocated */ struct _Repo *installed; /* packages considered installed */ Solvable *solvables; - int nsolvables; + int nsolvables; /* solvables allocated */ const char **languages; int nlanguages; diff --git a/src/repo.c b/src/repo.c index 55e9fd8..25af8b4 100644 --- a/src/repo.c +++ b/src/repo.c @@ -202,7 +202,7 @@ void repo_free_solvable_block(Repo *repo, Id start, int count, int reuseids) for (s = repo->pool->solvables + start, i = count; i--; s++) s->repo = 0; pool_free_solvable_block(repo->pool, start, count, reuseids); - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) if (data->end > repo->end) repodata_shrink(data, repo->end); } @@ -841,7 +841,7 @@ repo_search_md(Repo *repo, Id p, Id keyname, struct matchdata *md) } } - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (p < data->start || p >= data->end) continue; @@ -923,7 +923,7 @@ repo_lookup_str(Repo *repo, Id entry, Id keyname) return pool_id2str(pool, pool->solvables[entry].vendor); } } - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -955,7 +955,7 @@ repo_lookup_num(Repo *repo, Id entry, Id keyname, unsigned int notfound) return notfound; } } - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -990,7 +990,7 @@ repo_lookup_id(Repo *repo, Id entry, Id keyname) return repo->pool->solvables[entry].vendor; } } - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -1044,7 +1044,7 @@ repo_lookup_idarray(Repo *repo, Id entry, Id keyname, Queue *q) return lookup_idarray_solvable(repo, repo->pool->solvables[entry].enhances, q); } } - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -1073,7 +1073,7 @@ repo_lookup_bin_checksum(Repo *repo, Id entry, Id keyname, Id *typep) int i; const unsigned char *chk; - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -1103,7 +1103,7 @@ repo_lookup_void(Repo *repo, Id entry, Id keyname) int i; Id type; - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -1123,7 +1123,7 @@ repo_lookup_type(Repo *repo, Id entry, Id keyname) int i; Id type; - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { if (entry != SOLVID_META && (entry < data->start || entry >= data->end)) continue; @@ -1274,7 +1274,7 @@ repo_internalize(Repo *repo) int i; Repodata *data; - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) if (data->attrs || data->xattrs) repodata_internalize(data); } @@ -1285,7 +1285,7 @@ repo_disable_paging(Repo *repo) int i; Repodata *data; - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) repodata_disable_paging(data); } // EOF diff --git a/src/repo.h b/src/repo.h index fd2bde1..e7f15ec 100644 --- a/src/repo.h +++ b/src/repo.h @@ -281,4 +281,7 @@ void repo_add_poolstr_array(Repo *repo, Id p, Id keyname, const char *str); void repo_internalize(Repo *repo); void repo_disable_paging(Repo *repo); +#define FOR_REPODATAS(repo, rdid, data) \ + for (rdid = 0, data = repo->repodata + rdid; rdid < repo->nrepodata; rdid++, data++) + #endif /* LIBSOLV_REPO_H */ diff --git a/tools/common_write.c b/tools/common_write.c index 186caf5..5f0fb01 100644 --- a/tools/common_write.c +++ b/tools/common_write.c @@ -225,7 +225,7 @@ tool_write(Repo *repo, const char *basename, const char *attrname) int has_FL = 0; /* find languages and other info */ - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { for (j = 1, key = data->keys + j; j < data->nkeys; j++, key++) { diff --git a/tools/dumpsolv.c b/tools/dumpsolv.c index 91848b7..ceabd6e 100644 --- a/tools/dumpsolv.c +++ b/tools/dumpsolv.c @@ -25,7 +25,7 @@ dump_repodata(Repo *repo) if (repo->nrepodata == 0) return; printf("repo contains %d repodata sections:\n", repo->nrepodata); - for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++) + FOR_REPODATAS(repo, i, data) { unsigned int j; printf("\nrepodata %d has %d keys, %d schemata\n", i + 1, data->nkeys - 1, data->nschemata - 1); diff --git a/tools/installcheck.c b/tools/installcheck.c index 91eeab0..806f9b0 100644 --- a/tools/installcheck.c +++ b/tools/installcheck.c @@ -219,7 +219,7 @@ main(int argc, char **argv) for (i = j = 0; i < cand.count; i++) { p = cand.elements[i]; - if (solv->decisionmap[p] <= 0) + if (solver_get_decisionlevel(solv, p) <= 0) { cand.elements[j++] = p; continue; diff --git a/tools/patchcheck.c b/tools/patchcheck.c index ce8d8cd..9ebb535 100644 --- a/tools/patchcheck.c +++ b/tools/patchcheck.c @@ -139,12 +139,15 @@ void toinst(Solver *solv, Repo *repo, Repo *instrepo) { Pool *pool = solv->pool; + Queue q; int k; Id p; - for (k = 0; k < solv->decisionq.count; k++) + queue_init(&q); + solver_get_decisionqueue(solv, &q); + for (k = 0; k < q.count; k++) { - p = solv->decisionq.elements[k]; + p = q.elements[k]; if (p < 0 || p == SYSTEMSOLVABLE) continue; @@ -152,6 +155,7 @@ toinst(Solver *solv, Repo *repo, Repo *instrepo) /* oh my! */ pool->solvables[p].repo = instrepo; } + queue_free(&q); } void @@ -396,7 +400,7 @@ test_can_upgrade_all_packages(context_t *c, Id pid) for (i = 0; i < cand.count; i++) { p = cand.elements[i]; - if (p > 0 && solv->decisionmap[p] > 0) + if (p > 0 && solver_get_decisionlevel(solv, p) > 0) cand.elements[i] = -p; /* drop candidate */ } solver_free(solv); -- 2.7.4