- add repoid to repo struct
[platform/upstream/libsolv.git] / src / repo.c
index b178564..4a72485 100644 (file)
@@ -46,6 +46,7 @@ repo_create(Pool *pool, const char *name)
   repo = (Repo *)sat_calloc(1, sizeof(*repo));
   pool->repos = (Repo **)sat_realloc2(pool->repos, pool->nrepos + 1, sizeof(Repo *));
   pool->repos[pool->nrepos++] = repo;
+  repo->repoid = pool->nrepos;
   repo->name = name ? strdup(name) : 0;
   repo->pool = pool;
   repo->start = pool->nsolvables;
@@ -298,7 +299,12 @@ repo_free(Repo *repo, int reuseids)
   if (i == pool->nrepos)              /* repo not in pool, return */
     return;
   if (i < pool->nrepos - 1)
-    memmove(pool->repos + i, pool->repos + i + 1, (pool->nrepos - 1 - i) * sizeof(Repo *));
+    {
+      memmove(pool->repos + i, pool->repos + i + 1, (pool->nrepos - 1 - i) * sizeof(Repo *));
+      /* fix repo ids */
+      for (; i < pool->nrepos - 1; i++)
+       pool->repos[i]->repoid = i + 1;
+    }
   pool->nrepos--;
   repo_freedata(repo);
 }
@@ -334,7 +340,7 @@ repo_sidedata_extend(Repo *repo, void *b, size_t size, Id p, int count)
     { 
       int d = repo->start - p;
       b = sat_extend(b, n, d, size, REPO_SIDEDATA_BLOCK);
-      memmove(b + d * size, b, n * size);
+      memmove((char*)b + d * size, b, n * size);
       memset(b, 0, d * size);
       n += d;
     }     
@@ -342,7 +348,7 @@ repo_sidedata_extend(Repo *repo, void *b, size_t size, Id p, int count)
     { 
       int d = p + count - repo->end;
       b = sat_extend(b, n, d, size, REPO_SIDEDATA_BLOCK);
-      memset(b + n * size, 0, d * size);
+      memset((char*)b + n * size, 0, d * size);
     }     
   return b;
 }
@@ -812,7 +818,7 @@ repo_lookup_str(Repo *repo, Id entry, Id keyname)
     }
   for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
     {
-      if (entry && (entry < data->start || entry >= data->end))
+      if (entry != SOLVID_META && (entry < data->start || entry >= data->end))
        continue;
       if (!repodata_precheck_keyname(data, keyname))
        continue;
@@ -834,13 +840,13 @@ repo_lookup_num(Repo *repo, Id entry, Id keyname, unsigned int notfound)
 
   if (keyname == RPM_RPMDBID)
     {
-      if (repo->rpmdbid && entry && entry >= repo->start && entry < repo->end)
+      if (repo->rpmdbid && entry >= repo->start && entry < repo->end)
        return repo->rpmdbid[entry - repo->start];
       return notfound;
     }
   for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
     {
-      if (entry && (entry < data->start || entry >= data->end))
+      if (entry != SOLVID_META && (entry < data->start || entry >= data->end))
        continue;
       if (!repodata_precheck_keyname(data, keyname))
        continue;
@@ -879,7 +885,7 @@ repo_lookup_id(Repo *repo, Id entry, Id keyname)
     }   
   for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
     {   
-      if (entry && (entry < data->start || entry >= data->end))
+      if (entry != SOLVID_META && (entry < data->start || entry >= data->end))
        continue;
       if (!repodata_precheck_keyname(data, keyname))
        continue;
@@ -907,7 +913,7 @@ repo_lookup_bin_checksum(Repo *repo, Id entry, Id keyname, Id *typep)
   int i, j;
   for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
     {
-      if (entry && (entry < data->start || entry >= data->end))
+      if (entry != SOLVID_META && (entry < data->start || entry >= data->end))
        continue;
       if (!repodata_precheck_keyname(data, keyname))
        continue;
@@ -932,7 +938,7 @@ repo_lookup_void(Repo *repo, Id entry, Id keyname)
   int i, j;
   for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
     {
-      if (entry && (entry < data->start || entry >= data->end))
+      if (entry != SOLVID_META && (entry < data->start || entry >= data->end))
        continue;
       if (!repodata_precheck_keyname(data, keyname))
        continue;