return 0;
}
+/*
+ Returns one if the digest is not all zeros.
+*/
+int __pakfire_digest_set(const unsigned char* digest, const size_t length) {
+ for (unsigned int i = 0; i < length; i++) {
+ if (digest[i])
+ return 1;
+ }
+
+ return 0;
+}
+
static int pakfire_digests_check_length(struct pakfire* pakfire,
const enum pakfire_digest_types type, const size_t length) {
const size_t l = pakfire_digest_length(type);
//int is_datafile;
};
-/*
- Returns one if the digest is not all zeros.
-*/
-#define pakfire_file_has_digest(digest) __pakfire_file_has_digest(digest, sizeof(digest))
-
-static int __pakfire_file_has_digest(const unsigned char* digest, const size_t length) {
- for (unsigned int i = 0; i < length; i++) {
- if (digest[i])
- return 1;
- }
-
- return 0;
-}
-
static int pakfire_file_from_archive_entry(struct pakfire_file* file, struct archive_entry* entry) {
const char* attr = NULL;
const void* value = NULL;
// Copy digests
// SHA-512
- if (pakfire_file_has_digest(file->digests.sha512))
+ if (pakfire_digest_set(file->digests.sha512))
archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha512",
file->digests.sha512, sizeof(file->digests.sha512));
// SHA-256
- if (pakfire_file_has_digest(file->digests.sha256))
+ if (pakfire_digest_set(file->digests.sha256))
archive_entry_xattr_add_entry(entry, "PAKFIRE.digests.sha256",
file->digests.sha256, sizeof(file->digests.sha256));
switch (type) {
case PAKFIRE_DIGEST_SHA512:
- if (!pakfire_file_has_digest(file->digests.sha512))
+ if (!pakfire_digest_set(file->digests.sha512))
return NULL;
if (length)
return file->digests.sha512;
case PAKFIRE_DIGEST_SHA256:
- if (!pakfire_file_has_digest(file->digests.sha256))
+ if (!pakfire_digest_set(file->digests.sha256))
return NULL;
if (length)
}
// Check if this file has any digests at all
- if (pakfire_file_has_digest(file->digests.sha512))
+ if (pakfire_digest_set(file->digests.sha512))
digest_types |= PAKFIRE_DIGEST_SHA512;
- if (pakfire_file_has_digest(file->digests.sha256))
+ if (pakfire_digest_set(file->digests.sha256))
digest_types |= PAKFIRE_DIGEST_SHA256;
if (!digest_types) {
size_t pakfire_digest_length(const enum pakfire_digest_types digest);
+#define pakfire_digest_set(digest) __pakfire_digest_set(digest, sizeof(digest))
+int __pakfire_digest_set(const unsigned char* digest, const size_t length);
+
int pakfire_digests_compute_from_file(struct pakfire* pakfire,
struct pakfire_digests* digests, int flags, FILE* f);