if (pakfire_package_is_source(pkg) && !target)
target = "/usr/src/packages";
- char* nevra = pakfire_package_get_nevra(pkg);
+ const char* nevra = pakfire_package_get_nevra(pkg);
// Append package name and version to path
int r = pakfire_path_join(prefix, target, nevra);
// Cleanup
pakfire_package_unref(pkg);
pakfire_repo_unref(repo);
- free(nevra);
if (r < 0)
return NULL;
free(arch);
#ifdef ENABLE_DEBUG
- char* nevra = pakfire_package_get_nevra(pkg);
+ const char* nevra = pakfire_package_get_nevra(pkg);
DEBUG(archive->pakfire, "Created package %s (%p) from archive %p\n",
nevra, pkg, archive);
- free(nevra);
#endif
// Set path
int pakfire_package_cmp(PakfirePackage pkg1, PakfirePackage pkg2);
int pakfire_package_evr_cmp(PakfirePackage pkg1, PakfirePackage pkg2);
-char* pakfire_package_get_nevra(PakfirePackage pkg);
+const char* pakfire_package_get_nevra(PakfirePackage pkg);
const char* pakfire_package_get_name(PakfirePackage pkg);
void pakfire_package_set_name(PakfirePackage pkg, const char* name);
const char* pakfire_package_get_evr(PakfirePackage pkg);
Id id;
PakfireRepo repo;
+ char nevra[NAME_MAX];
+
char filename[NAME_MAX];
char path[PATH_MAX];
};
return pkg->id;
}
-PAKFIRE_EXPORT char* pakfire_package_get_nevra(PakfirePackage pkg) {
- Pool* pool = pakfire_get_solv_pool(pkg->pakfire);
- Solvable* s = get_solvable(pkg);
+PAKFIRE_EXPORT const char* pakfire_package_get_nevra(PakfirePackage pkg) {
+ if (!*pkg->nevra) {
+ Pool* pool = pakfire_get_solv_pool(pkg->pakfire);
+ Solvable* s = get_solvable(pkg);
- const char* nevra = pool_solvable2str(pool, s);
+ pakfire_string_set(pkg->nevra, pool_solvable2str(pool, s));
+ }
- return strdup(nevra);
+ return pkg->nevra;
}
PAKFIRE_EXPORT const char* pakfire_package_get_name(PakfirePackage pkg) {
// Fetch the archive
step->archive = pakfire_package_get_archive(step->package);
if (!step->archive) {
- char* nevra = pakfire_package_get_nevra(step->package);
+ const char* nevra = pakfire_package_get_nevra(step->package);
ERROR(step->pakfire, "Could not open package archive for %s: %s\n",
nevra, strerror(errno));
- free(nevra);
return -1;
}
// Extract payload to the root of the Pakfire instance
int r = pakfire_archive_extract(step->archive, NULL);
if (r) {
- char* nevra = pakfire_package_get_nevra(step->package);
+ const char* nevra = pakfire_package_get_nevra(step->package);
ERROR(step->pakfire, "Could not extract package %s: %d\n", nevra, r);
- free(nevra);
}
// Is it necessary to call ldconfig?