]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Support reading of TYPE_DELETED keys
authorMichael Schroeder <mls@suse.de>
Wed, 19 Sep 2018 11:54:53 +0000 (13:54 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 19 Sep 2018 11:54:53 +0000 (13:54 +0200)
src/repo_solv.c
src/repo_write.c
src/repopack.h
tools/common_write.c

index feb7f33e36d2147c6bb117ca71cb70e497f8fee0..a945a8f056070aaf9f0df8eb04b40f24000c35e4 100644 (file)
@@ -859,7 +859,7 @@ repo_add_solv(Repo *repo, FILE *fp, int flags)
        type = idmap[type];
       else if ((flags & REPO_LOCALPOOL) != 0)
         type = pool_str2id(pool, stringpool_id2str(spool, type), 1);
-      if (type < REPOKEY_TYPE_VOID || type > REPOKEY_TYPE_FLEXARRAY)
+      if (type < REPOKEY_TYPE_VOID || type > REPOKEY_TYPE_DELETED)
        {
          data.error = pool_error(pool, SOLV_ERROR_UNSUPPORTED, "unsupported data type '%s'", pool_id2str(pool, type));
          type = REPOKEY_TYPE_VOID;
index 9de1646bca7fc266428fad9b2c384f441fa57cc7..4597b7dde729de3c3fddceb7a6b8a6451f12fb9a 100644 (file)
@@ -773,6 +773,7 @@ collect_data_cb(void *vcbdata, Solvable *s, Repodata *data, Repokey *key, KeyVal
     xd = cbdata->extdata + 0;          /* incore buffer */
   switch(key->type)
     {
+      case REPOKEY_TYPE_DELETED:
       case REPOKEY_TYPE_VOID:
       case REPOKEY_TYPE_CONSTANT:
       case REPOKEY_TYPE_CONSTANTID:
index b76ae718cd01e34b055cc1fdb5d0fa4eda008f14..c7663a6482caf3b1139c370c1e7ae2994b97d5c7 100644 (file)
@@ -144,6 +144,7 @@ data_fetch(unsigned char *dp, KeyValue *kv, Repokey *key)
   switch (key->type)
     {
     case REPOKEY_TYPE_VOID:
+    case REPOKEY_TYPE_DELETED:
       return dp;
     case REPOKEY_TYPE_CONSTANT:
       kv->num2 = 0;
index eb012afc3dd4e8a20daad08fb23aad631da0e454..36f8dd89b8bb46350fbbcadfa911a13fe84c713c 100644 (file)
@@ -58,7 +58,7 @@ tool_write(Repo *repo, FILE *fp)
   repowriter_set_keyfilter(writer, keyfilter_solv, 0);
   if (repowriter_write(writer, fp) != 0)
     {
-      fprintf(stderr, "repo write failed\n");
+      fprintf(stderr, "repo write failed: %s\n", pool_errstr(repo->pool));
       exit(1);
     }
   if (fflush(fp))