- use FOR_REPODATAS macro
authorMichael Schroeder <mls@suse.de>
Tue, 14 Jun 2011 09:55:37 +0000 (11:55 +0200)
committerMichael Schroeder <mls@suse.de>
Tue, 14 Jun 2011 09:55:37 +0000 (11:55 +0200)
ext/repo_susetags.c
ext/repo_write.c
src/pool.c
src/pool.h
src/repo.c
src/repo.h
tools/common_write.c
tools/dumpsolv.c
tools/installcheck.c
tools/patchcheck.c

index 80ea304..a8646c6 100644 (file)
@@ -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))
index ece080c..0efb346 100644 (file)
@@ -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;
index ee65813..e9035a1 100644 (file)
@@ -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;
index fa701bf..4c53bfa 100644 (file)
@@ -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;
index 55e9fd8..25af8b4 100644 (file)
@@ -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
index fd2bde1..e7f15ec 100644 (file)
@@ -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 */
index 186caf5..5f0fb01 100644 (file)
@@ -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++)
            {
index 91848b7..ceabd6e 100644 (file)
@@ -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);
index 91eeab0..806f9b0 100644 (file)
@@ -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;
index ce8d8cd..9ebb535 100644 (file)
@@ -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);