struct archive_entry* pakfire_file_archive_entry(struct pakfire_file* file, int digest_types) {
const char* path = NULL;
+ int r;
struct archive_entry* entry = archive_entry_new();
if (!entry) {
archive_entry_set_ctime(entry, pakfire_file_get_ctime(file), 0);
archive_entry_set_mtime(entry, pakfire_file_get_mtime(file), 0);
+ // Compute any required file digests
+ r = pakfire_file_compute_digests(file, digest_types);
+ if (r)
+ goto ERROR;
+
// Copy digests
// SHA-3-512
file->digests.sha2_256, sizeof(file->digests.sha2_256));
return entry;
+
+ERROR:
+ if (entry)
+ archive_entry_free(entry);
+
+ return NULL;
}
static void pakfire_file_free(struct pakfire_file* file) {