simplyfy checksum code
authorMichael Schroeder <mls@suse.de>
Mon, 7 Apr 2014 10:50:06 +0000 (12:50 +0200)
committerMichael Schroeder <mls@suse.de>
Mon, 7 Apr 2014 10:50:06 +0000 (12:50 +0200)
Also change dumpsolv to use solv_chksum_type2str instead of printing
the internal type.

src/chksum.h
src/repodata.c
tools/dumpsolv.c
tools/repomdxml2solv.c

index 455e9ae..02f1504 100644 (file)
@@ -29,6 +29,18 @@ const char *solv_chksum_type2str(Id type);
 Id solv_chksum_str2type(const char *str);
 int solv_chksum_len(Id type);
 
+#ifdef LIBSOLV_INTERNAL
+
+#define case_CHKSUM_TYPES \
+    case REPOKEY_TYPE_MD5: \
+    case REPOKEY_TYPE_SHA1: \
+    case REPOKEY_TYPE_SHA224: \
+    case REPOKEY_TYPE_SHA256: \
+    case REPOKEY_TYPE_SHA384: \
+    case REPOKEY_TYPE_SHA512
+
+#endif
+
 #ifdef __cplusplus
 }
 #endif
index 7ef29f8..85e9103 100644 (file)
@@ -743,12 +743,7 @@ repodata_lookup_bin_checksum(Repodata *data, Id solvid, Id keyname, Id *typep)
     return 0;
   switch (key->type)
     {
-    case REPOKEY_TYPE_MD5:
-    case REPOKEY_TYPE_SHA1:
-    case REPOKEY_TYPE_SHA224:
-    case REPOKEY_TYPE_SHA256:
-    case REPOKEY_TYPE_SHA384:
-    case REPOKEY_TYPE_SHA512:
+    case_CHKSUM_TYPES:
       break;
     default:
       return 0;
@@ -892,12 +887,7 @@ repodata_stringify(Pool *pool, Repodata *data, Repokey *key, KeyValue *kv, int f
       kv->str = repodata_dir2str(data, kv->id, kv->str);
       kv->num = 1;     /* mark stringification */
       return 1;
-    case REPOKEY_TYPE_MD5:
-    case REPOKEY_TYPE_SHA1:
-    case REPOKEY_TYPE_SHA224:
-    case REPOKEY_TYPE_SHA256:
-    case REPOKEY_TYPE_SHA384:
-    case REPOKEY_TYPE_SHA512:
+    case_CHKSUM_TYPES:
       if (!(flags & SEARCH_CHECKSUMS))
        return 0;       /* skip em */
       if (kv->num)
@@ -1996,12 +1986,7 @@ dataiterator_strdup(Dataiterator *di)
     return;
   switch (di->key->type)
     {
-    case REPOKEY_TYPE_MD5:
-    case REPOKEY_TYPE_SHA1:
-    case REPOKEY_TYPE_SHA224:
-    case REPOKEY_TYPE_SHA256:
-    case REPOKEY_TYPE_SHA384:
-    case REPOKEY_TYPE_SHA512:
+    case_CHKSUM_TYPES:
     case REPOKEY_TYPE_DIRSTRARRAY:
       if (di->kv.num)  /* was it stringified into tmp space? */
         l = strlen(di->kv.str) + 1;
@@ -2017,23 +2002,8 @@ dataiterator_strdup(Dataiterator *di)
        case REPOKEY_TYPE_DIRSTRARRAY:
          l = strlen(di->kv.str) + 1;
          break;
-       case REPOKEY_TYPE_MD5:
-         l = SIZEOF_MD5;
-         break;
-       case REPOKEY_TYPE_SHA1:
-         l = SIZEOF_SHA1;
-         break;
-       case REPOKEY_TYPE_SHA224:
-         l = SIZEOF_SHA224;
-         break;
-       case REPOKEY_TYPE_SHA256:
-         l = SIZEOF_SHA256;
-         break;
-       case REPOKEY_TYPE_SHA384:
-         l = SIZEOF_SHA384;
-         break;
-       case REPOKEY_TYPE_SHA512:
-         l = SIZEOF_SHA512;
+       case_CHKSUM_TYPES:
+         l = solv_chksum_len(di->key->type);
          break;
        case REPOKEY_TYPE_BINARY:
          l = di->kv.num;
@@ -3427,12 +3397,7 @@ repodata_create_stubs(Repodata *data)
        case REPOKEY_TYPE_NUM:
          repodata_set_num(sdata, SOLVID_META, di.key->name, SOLV_KV_NUM64(&di.kv));
          break;
-       case REPOKEY_TYPE_MD5:
-       case REPOKEY_TYPE_SHA1:
-       case REPOKEY_TYPE_SHA224:
-       case REPOKEY_TYPE_SHA256:
-       case REPOKEY_TYPE_SHA384:
-       case REPOKEY_TYPE_SHA512:
+       case_CHKSUM_TYPES:
          repodata_set_bin_checksum(sdata, SOLVID_META, di.key->name, di.key->type, (const unsigned char *)di.kv.str);
          break;
        case REPOKEY_TYPE_IDARRAY:
index db2ce94..1aaee16 100644 (file)
@@ -14,6 +14,7 @@ static int with_attr;
 static int dump_json;
 
 #include "pool.h"
+#include "chksum.h"
 #include "repo_solv.h"
 
 
@@ -50,14 +51,6 @@ dump_attr(Repo *repo, Repodata *data, Repokey *key, KeyValue *kv)
     case REPOKEY_TYPE_STR:
       printf("%s: %s\n", keyname, kv->str);
       break;
-    case REPOKEY_TYPE_MD5:
-    case REPOKEY_TYPE_SHA1:
-    case REPOKEY_TYPE_SHA224:
-    case REPOKEY_TYPE_SHA256:
-    case REPOKEY_TYPE_SHA384:
-    case REPOKEY_TYPE_SHA512:
-      printf("%s: %s (%s)\n", keyname, repodata_chk2str(data, key->type, (unsigned char *)kv->str), pool_id2str(repo->pool, key->type));
-      break;
     case REPOKEY_TYPE_VOID:
       printf("%s: (void)\n", keyname);
       break;
@@ -92,6 +85,11 @@ dump_attr(Repo *repo, Repodata *data, Repokey *key, KeyValue *kv)
         printf("\n");
       break;
     default:
+      if (solv_chksum_len(key->type))
+       {
+         printf("%s: %s (%s)\n", keyname, repodata_chk2str(data, key->type, (unsigned char *)kv->str), solv_chksum_type2str(key->type));
+         break;
+       }
       printf("%s: ?\n", keyname);
       break;
     }
@@ -224,17 +222,6 @@ dump_attr_json(Repo *repo, Repodata *data, Repokey *key, KeyValue *kv, struct cb
       str = kv->str;
       printf("%s", jsonstring(pool, str));
       break;
-    case REPOKEY_TYPE_MD5:
-    case REPOKEY_TYPE_SHA1:
-    case REPOKEY_TYPE_SHA224:
-    case REPOKEY_TYPE_SHA256:
-    case REPOKEY_TYPE_SHA384:
-    case REPOKEY_TYPE_SHA512:
-      printf("{\n");
-      printf("%*s  \"value\": %s,\n", indent, "", jsonstring(pool, repodata_chk2str(data, key->type, (unsigned char *)kv->str)));
-      printf("%*s  \"type\": %s\n", indent, "", jsonstring(pool, pool_id2str(repo->pool, key->type)));
-      printf("%*s}", indent, "");
-      break;
     case REPOKEY_TYPE_VOID:
       printf("null");
       break;
@@ -276,6 +263,14 @@ dump_attr_json(Repo *repo, Repodata *data, Repokey *key, KeyValue *kv, struct cb
         printf("%*s]", indent, "");
       break;
     default:
+      if (solv_chksum_len(key->type))
+       {
+         printf("{\n");
+         printf("%*s  \"value\": %s,\n", indent, "", jsonstring(pool, repodata_chk2str(data, key->type, (unsigned char *)kv->str)));
+         printf("%*s  \"type\": %s\n", indent, "", jsonstring(pool, solv_chksum_type2str(key->type)));
+         printf("%*s}", indent, "");
+         break;
+       }
       printf("\"?\"");
       break;
     }
index 4bd131c..f32c35d 100644 (file)
@@ -76,15 +76,9 @@ doquery(Pool *pool, Repo *repo, const char *query)
        case REPOKEY_TYPE_CONSTANT:
          printf("%llu\n", SOLV_KV_NUM64(&di.kv));
          break;
-       case REPOKEY_TYPE_MD5:
-       case REPOKEY_TYPE_SHA1:
-       case REPOKEY_TYPE_SHA224:
-       case REPOKEY_TYPE_SHA256:
-       case REPOKEY_TYPE_SHA384:
-       case REPOKEY_TYPE_SHA512:
-         printf("%s:%s\n", solv_chksum_type2str(di.key->type), repodata_chk2str(di.data, di.key->type, (unsigned char *)di.kv.str));
-         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;
        }
     }