Pakfire pakfire;
Id id;
PakfireFile filelist;
- PakfireArchive archive;
int nrefs;
};
DEBUG(pkg->pakfire, "Releasing Package at %p\n", pkg);
pakfire_unref(pkg->pakfire);
- pakfire_archive_unref(pkg->archive);
pakfire_package_filelist_remove(pkg);
pakfire_free(pkg);
}
}
PAKFIRE_EXPORT PakfireArchive pakfire_package_get_archive(PakfirePackage pkg) {
- // Return the package if it has already been opened
- if (pkg->archive)
- return pakfire_archive_ref(pkg->archive);
-
// Otherwise open the archive from the cache
char* path = pakfire_package_get_cache_path(pkg);
- PakfireArchive archive = pakfire_archive_open(pkg->pakfire, path);
+ if (!path)
+ return NULL;
- // Free resources
+ // Open archive
+ PakfireArchive archive = pakfire_archive_open(pkg->pakfire, path);
pakfire_free(path);
return archive;
struct _PakfireStep {
Pakfire pakfire;
PakfirePackage package;
+ PakfireArchive archive;
pakfire_step_type_t type;
int nrefs;
};
DEBUG(step->pakfire, "Releasing Step at %p\n", step);
pakfire_package_unref(step->package);
+ pakfire_archive_unref(step->archive);
pakfire_unref(step->pakfire);
pakfire_free(step);
}
return 1;
// Fetch the archive
- PakfireArchive archive = pakfire_package_get_archive(step->package);
- if (!archive) {
+ step->archive = pakfire_package_get_archive(step->package);
+ if (!step->archive) {
char* nevra = pakfire_package_get_nevra(step->package);
char* cache_path = pakfire_package_get_cache_path(step->package);
}
// Verify the archive
- pakfire_archive_verify_status_t status = pakfire_archive_verify(archive);
- pakfire_archive_unref(archive);
+ pakfire_archive_verify_status_t status = pakfire_archive_verify(step->archive);
+
+ // Log error
+ if (status) {
+ const char* error = pakfire_archive_verify_strerror(status);
+ ERROR(step->pakfire, "Archive verification failed: %s\n", error);
+ }
return status;
}