Create a real type for a checksum handle
authorMichael Schroeder <mls@suse.de>
Thu, 14 Nov 2013 15:35:09 +0000 (16:35 +0100)
committerMichael Schroeder <mls@suse.de>
Thu, 14 Nov 2013 15:35:09 +0000 (16:35 +0100)
Should be completely compatible, as the handle
was of type "void *" before.

bindings/solv.i
examples/solv.c
ext/repo_arch.c
ext/repo_deb.c
ext/repo_pubkey.c
ext/repo_pubkey.h
ext/repo_rpmdb.c
ext/testcase.c
src/chksum.c
src/chksum.h

index 9bde0a0c7dad770c7aa935c388824e2f9b229fbe..ef658f4c82bcc703e4a367e9be916f0f836e7b9a 100644 (file)
@@ -457,7 +457,6 @@ typedef int bool;
 #define SOLVER_SOLUTION_REPLACE_VENDORCHANGE    -104
 #define SOLVER_SOLUTION_REPLACE_NAMECHANGE      -105
 
-typedef struct chksum Chksum;
 typedef void *AppObjectPtr;
 typedef Id DepId;
 
@@ -924,7 +923,7 @@ typedef struct {
 
 %extend Chksum {
   Chksum(Id type) {
-    return (Chksum *)solv_chksum_create(type);
+    return solv_chksum_create(type);
   }
   Chksum(Id type, const char *hex) {
     unsigned char buf[64];
@@ -933,15 +932,15 @@ typedef struct {
       return 0;
     if (solv_hex2bin(&hex, buf, sizeof(buf)) != l || hex[0])
       return 0;
-    return (Chksum *)solv_chksum_create_from_bin(type, buf);
+    return solv_chksum_create_from_bin(type, buf);
   }
   ~Chksum() {
     solv_chksum_free($self, 0);
   }
   Id const type;
   %{
-  SWIGINTERN Id Chksum_type_get(Chksum *chksum) {
-    return solv_chksum_get_type(chksum);
+  SWIGINTERN Id Chksum_type_get(Chksum *chk) {
+    return solv_chksum_get_type(chk);
   }
   %}
   void add(const char *str) {
index 6bacc19427885ad995823e65b8c61a238e9c313b..09258cbbbce84db5baef5ff176556391fc87a010 100644 (file)
@@ -527,7 +527,7 @@ verify_checksum(int fd, const char *file, const unsigned char *chksum, Id chksum
 {
   char buf[1024];
   const unsigned char *sum;
-  void *h;
+  Chksum *h;
   int l;
 
   h = solv_chksum_create(chksumtype);
@@ -1049,7 +1049,7 @@ void
 calc_checksum_fp(FILE *fp, Id chktype, unsigned char *out)
 {
   char buf[4096];
-  void *h = solv_chksum_create(chktype);
+  Chksum *h = solv_chksum_create(chktype);
   int l;
 
   solv_chksum_add(h, CHKSUM_IDENT, strlen(CHKSUM_IDENT));
@@ -1062,7 +1062,7 @@ calc_checksum_fp(FILE *fp, Id chktype, unsigned char *out)
 void
 calc_checksum_stat(struct stat *stb, Id chktype, unsigned char *cookie, unsigned char *out)
 {
-  void *h = solv_chksum_create(chktype);
+  Chksum *h = solv_chksum_create(chktype);
   solv_chksum_add(h, CHKSUM_IDENT, strlen(CHKSUM_IDENT));
   if (cookie)
     solv_chksum_add(h, cookie, 32);
index f6b9089d5e9cbe334f5a6a404c8830f8bd143d77..394e8b5ed6a2fcdc50dac25e7f929d0c622a3c8b 100644 (file)
@@ -338,7 +338,7 @@ repo_add_arch_pkg(Repo *repo, const char *fn, int flags)
   Solvable *s;
   int l, fd;
   struct stat stb;
-  void *pkgidhandle = 0;
+  Chksum *pkgidchk = 0;
 
   data = repo_add_repodata(repo, flags);
   if ((fd = open(flags & REPO_USE_ROOTDIR ? pool_prepend_rootdir_tmp(pool, fn) : fn, O_RDONLY, 0)) < 0)
@@ -370,14 +370,14 @@ repo_add_arch_pkg(Repo *repo, const char *fn, int flags)
       ignoreline = 0;
       s = pool_id2solvable(pool, repo_add_solvable(repo));
       if (flags & ARCH_ADD_WITH_PKGID)
-       pkgidhandle = solv_chksum_create(REPOKEY_TYPE_MD5);
+       pkgidchk = solv_chksum_create(REPOKEY_TYPE_MD5);
       while (getsentry(&th, line, sizeof(line)))
        {
          l = strlen(line);
          if (l == 0)
            continue;
-         if (pkgidhandle)
-           solv_chksum_add(pkgidhandle, line, l);
+         if (pkgidchk)
+           solv_chksum_add(pkgidchk, line, l);
          if (line[l - 1] != '\n')
            {
              ignoreline = 1;
@@ -437,8 +437,8 @@ repo_add_arch_pkg(Repo *repo, const char *fn, int flags)
   if (!s)
     {
       pool_error(pool, -1, "%s: not an arch package", fn);
-      if (pkgidhandle)
-       solv_chksum_free(pkgidhandle, 0);
+      if (pkgidchk)
+       solv_chksum_free(pkgidchk, 0);
       return 0;
     }
   if (s && !s->name)
@@ -458,16 +458,16 @@ repo_add_arch_pkg(Repo *repo, const char *fn, int flags)
        repodata_set_location(data, s - pool->solvables, 0, 0, fn);
       if (S_ISREG(stb.st_mode))
         repodata_set_num(data, s - pool->solvables, SOLVABLE_DOWNLOADSIZE, (unsigned long long)stb.st_size);
-      if (pkgidhandle)
+      if (pkgidchk)
        {
          unsigned char pkgid[16];
-         solv_chksum_free(pkgidhandle, pkgid);
+         solv_chksum_free(pkgidchk, pkgid);
          repodata_set_bin_checksum(data, s - pool->solvables, SOLVABLE_PKGID, REPOKEY_TYPE_MD5, pkgid);
-         pkgidhandle = 0;
+         pkgidchk = 0;
        }
     }
-  if (pkgidhandle)
-    solv_chksum_free(pkgidhandle, 0);
+  if (pkgidchk)
+    solv_chksum_free(pkgidchk, 0);
   if (!(flags & REPO_NO_INTERNALIZE))
     repodata_internalize(data);
   return s ? s - pool->solvables : 0;
index 6d2c7bda738c5c1ae3e330ecd2f75566782f44b5..5af0c70b942b5537410b59f3d9da5c8d12c90296 100644 (file)
@@ -524,9 +524,9 @@ repo_add_deb(Repo *repo, const char *deb, int flags)
   gotpkgid = 0;
   if (flags & DEBS_ADD_WITH_PKGID)
     {
-      void *handle = solv_chksum_create(REPOKEY_TYPE_MD5);
-      solv_chksum_add(handle, ctgz, clen);
-      solv_chksum_free(handle, pkgid);
+      Chksum *chk = solv_chksum_create(REPOKEY_TYPE_MD5);
+      solv_chksum_add(chk, ctgz, clen);
+      solv_chksum_free(chk, pkgid);
       gotpkgid = 1;
     }
   if (ctgz[0] != 0x1f || ctgz[1] != 0x8b)
index 637127497cc7f939d34f06abb00cd44014098597..b1a9aa0d25898cbf066561b35a5d7398624d4b0c 100644 (file)
@@ -264,7 +264,7 @@ pgphashalgo2type(int algo)
  * hash the final trailer
  * create a "sigdata" block suitable for a call to solv_pgpverify */
 static void
-pgpsig_makesigdata(struct pgpsig *sig, unsigned char *p, int l, unsigned char *pubkey, int pubkeyl, unsigned char *userid, int useridl, void *h)
+pgpsig_makesigdata(struct pgpsig *sig, unsigned char *p, int l, unsigned char *pubkey, int pubkeyl, unsigned char *userid, int useridl, Chksum *h)
 {
   int type = sig->type;
   unsigned char b[6];
@@ -581,7 +581,7 @@ parsepubkey(Solvable *s, Repodata *data, unsigned char *p, int pl, int flags)
          if (p[0] == 3 && l >= 10)
            {
              unsigned int ex;
-             void *h;
+             Chksum *h;
              maxsigcr = kcr = p[1] << 24 | p[2] << 16 | p[3] << 8 | p[4];
              ex = 0;
              if (p[5] || p[6])
@@ -621,7 +621,7 @@ parsepubkey(Solvable *s, Repodata *data, unsigned char *p, int pl, int flags)
            }
          else if (p[0] == 4 && l >= 6)
            {
-             void *h;
+             Chksum *h;
              unsigned char hdr[3];
              unsigned char fp[20];
              char fpx[40 + 1];
@@ -656,7 +656,7 @@ parsepubkey(Solvable *s, Repodata *data, unsigned char *p, int pl, int flags)
          htype = pgphashalgo2type(sig.hashalgo);
          if (htype && sig.mpioff)
            {
-             void *h = solv_chksum_create(htype);
+             Chksum *h = solv_chksum_create(htype);
              pgpsig_makesigdata(&sig, p, l, pubkey, pubkeyl, userid, useridl, h);
              solv_chksum_free(h, 0);
            }
@@ -1199,7 +1199,7 @@ repo_verify_sigdata(Repo *repo, unsigned char *sigdata, int sigdatal, const char
 }
 
 Id
-solvsig_verify(Solvsig *ss, Repo *repo, void *chk)
+solvsig_verify(Solvsig *ss, Repo *repo, Chksum *chk)
 {
   struct pgpsig pgpsig;
   void *chk2;
index da9c93724efced3a0dce60d09debf42a7e44a462..e3c8fb8b668d90cb448d0f65791b1b778760f645 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "repo.h"
+#include "chksum.h"
 
 #define ADD_KEYDIR_WITH_DOTFILES       (1 << 8)
 #define ADD_WITH_SUBKEYS               (1 << 9)
@@ -29,7 +30,7 @@ typedef struct _solvsig {
 
 Solvsig *solvsig_create(FILE *fp);
 void solvsig_free(Solvsig *ss);
-Id solvsig_verify(Solvsig *ss, Repo *repo, void *chk);
+Id solvsig_verify(Solvsig *ss, Repo *repo, Chksum *chk);
 
 Id repo_verify_sigdata(Repo *repo, unsigned char *sigdata, int sigdatal, const char *keyid);
 
index 82961ca498a54bde990e4e8f49f53925b40ef213..16457dbdea9ed3c520f2378ce317000177ecdf6d 100644 (file)
@@ -1895,8 +1895,8 @@ repo_add_rpm(Repo *repo, const char *rpm, int flags)
   unsigned char hdrid[32];
   int pkgidtype, leadsigidtype, hdridtype;
   Id chksumtype = 0;
-  void *chksumh = 0;
-  void *leadsigchksumh = 0;
+  Chksum *chksumh = 0;
+  Chksum *leadsigchksumh = 0;
   int forcebinary = 0;
 
   data = repo_add_repodata(repo, flags);
index d21621d5b350ebd678edd4863261bd027db87ae0..08868b65691e78c0bd7b765756fa56ea71ec3164 100644 (file)
@@ -1330,7 +1330,7 @@ testcase_ruleid(Solver *solv, Id rid)
   Strqueue sq;
   Queue q;
   int i;
-  void *chk;
+  Chksum *chk;
   const unsigned char *md5;
   int md5l;
   const char *s;
@@ -1363,7 +1363,7 @@ testcase_problemid(Solver *solv, Id problem)
 {
   Strqueue sq;
   Queue q;
-  void *chk;
+  Chksum *chk;
   const unsigned char *md5;
   int i, md5l;
   const char *s;
@@ -1390,7 +1390,7 @@ static const char *
 testcase_solutionid(Solver *solv, Id problem, Id solution)
 {
   Id intid;
-  void *chk;
+  Chksum *chk;
   const unsigned char *md5;
   int md5l;
   const char *s;
index 3e973fd1b4c5419f4d513577d4e2873062a8dce3..81b8d57902f196a69f2370871891dcd51dc764a6 100644 (file)
@@ -19,7 +19,7 @@
 #include "sha1.h"
 #include "sha2.h"
 
-struct ctxhandle {
+struct _Chksum {
   Id type;
   int done;
   unsigned char result[64];
@@ -30,34 +30,34 @@ struct ctxhandle {
   } c;
 };
 
-void *
+Chksum *
 solv_chksum_create(Id type)
 {
-  struct ctxhandle *h;
-  h = solv_calloc(1, sizeof(*h));
-  h->type = type;
+  Chksum *chk;
+  chk = solv_calloc(1, sizeof(*chk));
+  chk->type = type;
   switch(type)
     {
     case REPOKEY_TYPE_MD5:
-      solv_MD5_Init(&h->c.md5);
-      return h;
+      solv_MD5_Init(&chk->c.md5);
+      return chk;
     case REPOKEY_TYPE_SHA1:
-      solv_SHA1_Init(&h->c.sha1);
-      return h;
+      solv_SHA1_Init(&chk->c.sha1);
+      return chk;
     case REPOKEY_TYPE_SHA256:
-      solv_SHA256_Init(&h->c.sha256);
-      return h;
+      solv_SHA256_Init(&chk->c.sha256);
+      return chk;
     default:
       break;
     }
-  free(h);
+  free(chk);
   return 0;
 }
 
-void *
-solv_chksum_create_clone(void *handle)
+Chksum *
+solv_chksum_create_clone(Chksum *chk)
 {
-  return solv_memdup(handle, sizeof(struct ctxhandle));
+  return solv_memdup(chk, sizeof(*chk));
 }
 
 int
@@ -76,36 +76,35 @@ solv_chksum_len(Id type)
     }
 }
 
-void *
+Chksum *
 solv_chksum_create_from_bin(Id type, const unsigned char *buf)
 {
-  struct ctxhandle *h;
+  Chksum *chk;
   int l = solv_chksum_len(type);
   if (buf == 0 || l == 0)
     return 0;
-  h = solv_calloc(1, sizeof(*h));
-  h->type = type;
-  h->done = 1;
-  memcpy(h->result, buf, l);
-  return h;
+  chk = solv_calloc(1, sizeof(*chk));
+  chk->type = type;
+  chk->done = 1;
+  memcpy(chk->result, buf, l);
+  return chk;
 }
 
 void
-solv_chksum_add(void *handle, const void *data, int len)
+solv_chksum_add(Chksum *chk, const void *data, int len)
 {
-  struct ctxhandle *h = handle;
-  if (h->done)
+  if (chk->done)
     return;
-  switch(h->type)
+  switch(chk->type)
     {
     case REPOKEY_TYPE_MD5:
-      solv_MD5_Update(&h->c.md5, (void *)data, len);
+      solv_MD5_Update(&chk->c.md5, (void *)data, len);
       return;
     case REPOKEY_TYPE_SHA1:
-      solv_SHA1_Update(&h->c.sha1, data, len);
+      solv_SHA1_Update(&chk->c.sha1, data, len);
       return;
     case REPOKEY_TYPE_SHA256:
-      solv_SHA256_Update(&h->c.sha256, data, len);
+      solv_SHA256_Update(&chk->c.sha256, data, len);
       return;
     default:
       return;
@@ -113,35 +112,34 @@ solv_chksum_add(void *handle, const void *data, int len)
 }
 
 const unsigned char *
-solv_chksum_get(void *handle, int *lenp)
+solv_chksum_get(Chksum *chk, int *lenp)
 {
-  struct ctxhandle *h = handle;
-  if (h->done)
+  if (chk->done)
     {
       if (lenp)
-        *lenp = solv_chksum_len(h->type);
-      return h->result;
+        *lenp = solv_chksum_len(chk->type);
+      return chk->result;
     }
-  switch(h->type)
+  switch(chk->type)
     {
     case REPOKEY_TYPE_MD5:
-      solv_MD5_Final(h->result, &h->c.md5);
-      h->done = 1;
+      solv_MD5_Final(chk->result, &chk->c.md5);
+      chk->done = 1;
       if (lenp)
        *lenp = 16;
-      return h->result;
+      return chk->result;
     case REPOKEY_TYPE_SHA1:
-      solv_SHA1_Final(&h->c.sha1, h->result);
-      h->done = 1;
+      solv_SHA1_Final(&chk->c.sha1, chk->result);
+      chk->done = 1;
       if (lenp)
        *lenp = 20;
-      return h->result;
+      return chk->result;
     case REPOKEY_TYPE_SHA256:
-      solv_SHA256_Final(h->result, &h->c.sha256);
-      h->done = 1;
+      solv_SHA256_Final(chk->result, &chk->c.sha256);
+      chk->done = 1;
       if (lenp)
        *lenp = 32;
-      return h->result;
+      return chk->result;
     default:
       if (lenp)
        *lenp = 0;
@@ -150,17 +148,15 @@ solv_chksum_get(void *handle, int *lenp)
 }
 
 Id
-solv_chksum_get_type(void *handle)
+solv_chksum_get_type(Chksum *chk)
 {
-  struct ctxhandle *h = handle;
-  return h->type;
+  return chk->type;
 }
 
 int
-solv_chksum_isfinished(void *handle)
+solv_chksum_isfinished(Chksum *chk)
 {
-  struct ctxhandle *h = handle;
-  return h->done != 0;
+  return chk->done != 0;
 }
 
 const char *
@@ -192,17 +188,17 @@ solv_chksum_str2type(const char *str)
 }
 
 void *
-solv_chksum_free(void *handle, unsigned char *cp)
+solv_chksum_free(Chksum *chk, unsigned char *cp)
 {
   if (cp)
     {
       const unsigned char *res;
       int l;
-      res = solv_chksum_get(handle, &l);
+      res = solv_chksum_get(chk, &l);
       if (l && res)
         memcpy(cp, res, l);
     }
-  solv_free(handle);
+  solv_free(chk);
   return 0;
 }
 
index d81adab6725e748fa24cce9519760eeba77f2a16..455e9ae80ef1da977bfc4a383cda6ce89601b66f 100644 (file)
 extern "C" {
 #endif
 
-void *solv_chksum_create(Id type);
-void *solv_chksum_create_clone(void *handle);
-void *solv_chksum_create_from_bin(Id type, const unsigned char *buf);
-void solv_chksum_add(void *handle, const void *data, int len);
-Id solv_chksum_get_type(void *handle);
-int solv_chksum_isfinished(void *handle);
-const unsigned char *solv_chksum_get(void *handle, int *lenp);
-void *solv_chksum_free(void *handle, unsigned char *cp);
+struct _Chksum;
+typedef struct _Chksum Chksum;
+
+Chksum *solv_chksum_create(Id type);
+Chksum *solv_chksum_create_clone(Chksum *chk);
+Chksum *solv_chksum_create_from_bin(Id type, const unsigned char *buf);
+void solv_chksum_add(Chksum *chk, const void *data, int len);
+Id solv_chksum_get_type(Chksum *chk);
+int solv_chksum_isfinished(Chksum *chk);
+const unsigned char *solv_chksum_get(Chksum *chk, int *lenp);
+void *solv_chksum_free(Chksum *chk, unsigned char *cp);
 const char *solv_chksum_type2str(Id type);
 Id solv_chksum_str2type(const char *str);
 int solv_chksum_len(Id type);