From: Michael Tremer Date: Tue, 27 Apr 2021 12:43:46 +0000 (+0000) Subject: archive: Assemble evr from old-style meta data X-Git-Tag: 0.9.28~1285^2~215 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94131aa0356ca63ac1eb95a40fa93fbfe0713f31;p=pakfire.git archive: Assemble evr from old-style meta data Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index 28102909b..0bf49b34d 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -797,10 +797,23 @@ static int pakfire_archive_extract_progressbar( char* name = pakfire_archive_get(archive, "package", "name"); char* arch = pakfire_archive_get(archive, "package", "arch"); - char* e = pakfire_archive_get(archive, "package", "epoch"); - char* v = pakfire_archive_get(archive, "package", "version"); - char* r = pakfire_archive_get(archive, "package", "release"); - char* evr = pakfire_package_join_evr(e, v, r); + char* evr = pakfire_archive_get(archive, "package", "evr"); + + // For old style packages, we need to make evr manually + if (!evr) { + char* e = pakfire_archive_get(archive, "package", "epoch"); + char* v = pakfire_archive_get(archive, "package", "version"); + char* r = pakfire_archive_get(archive, "package", "release"); + + evr = pakfire_package_join_evr(e, v, r); + + if (e) + free(e); + if (v) + free(v); + if (r) + free(r); + } int err = pakfire_progressbar_create(progressbar, NULL); if (err) @@ -827,12 +840,6 @@ ERROR: free(name); if (arch) free(arch); - if (e) - free(e); - if (v) - free(v); - if (r) - free(r); if (evr) free(evr); @@ -1361,20 +1368,30 @@ PAKFIRE_EXPORT PakfirePackage pakfire_archive_make_package(PakfireArchive archiv char* name = pakfire_archive_get(archive, "package", "name"); char* arch = pakfire_archive_get(archive, "package", "arch"); - char* e = pakfire_archive_get(archive, "package", "epoch"); - char* v = pakfire_archive_get(archive, "package", "version"); - char* r = pakfire_archive_get(archive, "package", "release"); - char* evr = pakfire_package_join_evr(e, v, r); + char* evr = pakfire_archive_get(archive, "package", "evr"); + if (!evr) { + char* e = pakfire_archive_get(archive, "package", "epoch"); + char* v = pakfire_archive_get(archive, "package", "version"); + char* r = pakfire_archive_get(archive, "package", "release"); + + evr = pakfire_package_join_evr(e, v, r); + + if (e) + free(e); + if (v) + free(v); + if (r) + free(r); + } PakfirePackage pkg = pakfire_package_create( archive->pakfire, repo, name, evr, (arch) ? arch : "src" ); - free(name); - free(e); - free(v); - free(r); - free(evr); + if (name) + free(name); + if (evr) + free(evr); if (arch) free(arch);