Imported Upstream version 0.6.29
[platform/upstream/libsolv.git] / tools / repomdxml2solv.c
index 854d790..e3159de 100644 (file)
@@ -6,8 +6,6 @@
  */
 
 #include <sys/types.h>
-#include <limits.h>
-#include <fcntl.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -42,7 +40,7 @@ doquery(Pool *pool, Repo *repo, const char *query)
   qp = strchr(query, ':');
   if (qp)
     {
-      type = strn2id(pool, query, qp - query, 0);
+      type = pool_strn2id(pool, query, qp - query, 0);
       if (!type)
        exit(0);
       qp++;
@@ -50,7 +48,7 @@ doquery(Pool *pool, Repo *repo, const char *query)
   else
     qp = query;
   snprintf(qbuf, sizeof(qbuf), "repository:repomd:%s", qp);
-  id = str2id(pool, qbuf, 0);
+  id = pool_str2id(pool, qbuf, 0);
   if (!id)
     exit(0);
   dataiterator_init(&di, pool, repo, SOLVID_META, id, 0, 0);
@@ -67,20 +65,18 @@ doquery(Pool *pool, Repo *repo, const char *query)
        {
        case REPOKEY_TYPE_ID:
        case REPOKEY_TYPE_CONSTANTID:
-         printf("%s\n", id2str(pool, di.kv.id));
+         printf("%s\n", pool_id2str(pool, di.kv.id));
          break;
        case REPOKEY_TYPE_STR:
          printf("%s\n", di.kv.str);
          break;
        case REPOKEY_TYPE_NUM:
-         printf("%d\n", di.kv.num);
-         break;
-       case REPOKEY_TYPE_MD5:
-       case REPOKEY_TYPE_SHA1:
-       case REPOKEY_TYPE_SHA256:
-         printf("%s:%s\n", sat_chksum_type2str(di.key->type), repodata_chk2str(di.data, di.key->type, (unsigned char *)di.kv.str));
+       case REPOKEY_TYPE_CONSTANT:
+         printf("%llu\n", SOLV_KV_NUM64(&di.kv));
          break;
        default:
+         if (solv_chksum_len(di.key->type))
+           printf("%s:%s\n", solv_chksum_type2str(di.key->type), repodata_chk2str(di.data, di.key->type, (unsigned char *)di.kv.str));
          break;
        }
     }
@@ -111,7 +107,11 @@ main(int argc, char **argv)
           break;
         }
     }
-  repo_add_repomdxml(repo, stdin, flags);
+  if (repo_add_repomdxml(repo, stdin, flags))
+    {
+      fprintf(stderr, "repomdxml2solv: %s\n", pool_errstr(pool));
+      exit(1);
+    }
   if (query)
     doquery(pool, repo, query);
   else