]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Add repodata_lookup_dirstrarray_uninternalized method
authorMichael Schroeder <mls@suse.de>
Fri, 26 Feb 2016 10:45:09 +0000 (11:45 +0100)
committerMichael Schroeder <mls@suse.de>
Fri, 26 Feb 2016 10:45:09 +0000 (11:45 +0100)
Needed for next commit.

src/libsolv.ver
src/repodata.c
src/repodata.h

index 65082881c5b35c678e4d1825643cf982dc535bef..cc79704a05b1d770bd329a87551a96f9ddd151c9 100644 (file)
@@ -201,6 +201,7 @@ SOLV_1.0 {
                repodata_key2id;
                repodata_localize_id;
                repodata_lookup_bin_checksum;
+               repodata_lookup_bin_checksum_uninternalized;
                repodata_lookup_binary;
                repodata_lookup_dirstrarray_uninternalized;
                repodata_lookup_id;
index ad3e71a2d81126ee6f8fe5910d9c6c2fbed9280e..b611afce0e192932bc431ef553cdaeade83c86da 100644 (file)
@@ -881,6 +881,31 @@ repodata_lookup_dirstrarray_uninternalized(Repodata *data, Id solvid, Id keyname
   return 0;
 }
 
+const unsigned char *
+repodata_lookup_bin_checksum_uninternalized(Repodata *data, Id solvid, Id keyname, Id *typep)
+{
+  Id *ap;
+  if (!data->attrs)
+    return 0;
+  ap = data->attrs[solvid - data->start];
+  if (!ap)
+    return 0;
+  for (; *ap; ap += 2)
+    {
+      if (data->keys[*ap].name != keyname)
+       continue;
+      switch (data->keys[*ap].type)
+       {
+         case_CHKSUM_TYPES:
+           *typep = data->keys[*ap].type;
+           return (const unsigned char *)data->attrdata + ap[1];
+         default:
+           break;
+       }
+    }
+  return 0;
+}
+
 /************************************************************************
  * data search
  */
index c18c688fda4e7eff590b5d4e3029e63469871218..d72c60f19718401727ef0acf4e3cb4c2a90e2241 100644 (file)
@@ -300,8 +300,11 @@ const char *repodata_chk2str(Repodata *data, Id type, const unsigned char *buf);
 void repodata_set_location(Repodata *data, Id solvid, int medianr, const char *dir, const char *file);
 void repodata_set_deltalocation(Repodata *data, Id handle, int medianr, const char *dir, const char *file);
 void repodata_set_sourcepkg(Repodata *data, Id solvid, const char *sourcepkg);
+
+/* uninternalized data lookup */
 Id repodata_lookup_id_uninternalized(Repodata *data, Id solvid, Id keyname, Id voidid);
 const char *repodata_lookup_dirstrarray_uninternalized(Repodata *data, Id solvid, Id keyname, Id *didp, Id *iterp);
+const unsigned char *repodata_lookup_bin_checksum_uninternalized(Repodata *data, Id solvid, Id keyname, Id *typep);
 
 /* stats */
 unsigned int repodata_memused(Repodata *data);