]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Assemble evr from old-style meta data
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 27 Apr 2021 12:43:46 +0000 (12:43 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 27 Apr 2021 12:43:46 +0000 (12:43 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 28102909b19b76db2f90793511b2da090a6cfd70..0bf49b34debb6fd0c23edb8e0a43432608fde43b 100644 (file)
@@ -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);