]> git.ipfire.org Git - pakfire.git/commitdiff
archive: Use package for progressbar styling
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 29 Apr 2021 11:15:11 +0000 (11:15 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 29 Apr 2021 11:15:11 +0000 (11:15 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c

index 0bdc45df2e6bbab374c5d9944017dc0a53174372..620e316a02805e5fc14780f6b71c0d83591419ef 100644 (file)
@@ -796,56 +796,47 @@ struct pakfire_archive_extractor {
 
 static int pakfire_archive_extract_progressbar(
                PakfireArchive archive, struct pakfire_progressbar** progressbar) {
-       char* name = pakfire_archive_get(archive, "package", "name");
-       char* arch = pakfire_archive_get(archive, "package", "arch");
-
-       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");
+       PakfireRepo repo = NULL;
+       PakfirePackage pkg = NULL;
+       int r = 1;
 
-               evr = pakfire_package_join_evr(e, v, r);
+       // Fetch the dummy repository
+       repo = pakfire_get_repo(archive->pakfire, "@dummy");
+       if (!repo)
+               goto ERROR;
 
-               if (e)
-                       free(e);
-               if (v)
-                       free(v);
-               if (r)
-                       free(r);
-       }
+       // Fetch package data from archive
+       pkg = pakfire_archive_make_package(archive, repo);
+       if (!pkg)
+               goto ERROR;
 
-       int err = pakfire_progressbar_create(progressbar, NULL);
-       if (err)
+       r = pakfire_progressbar_create(progressbar, NULL);
+       if (r)
                goto ERROR;
 
        // Add progressbar widgets
-       err = pakfire_progressbar_add_string(*progressbar, "%s-%s.%s", name, evr, arch);
-       if (err)
+       r = pakfire_progressbar_add_string(*progressbar, "%s", pakfire_package_get_nevra(pkg));
+       if (r)
                goto ERROR;
 
-       err = pakfire_progressbar_add_bar(*progressbar);
-       if (err)
+       r = pakfire_progressbar_add_bar(*progressbar);
+       if (r)
                goto ERROR;
 
-       err = pakfire_progressbar_add_percentage(*progressbar);
-       if (err)
+       r = pakfire_progressbar_add_percentage(*progressbar);
+       if (r)
                goto ERROR;
 
        // Success
-       err = 0;
+       r = 0;
 
 ERROR:
-       if (name)
-               free(name);
-       if (arch)
-               free(arch);
-       if (evr)
-               free(evr);
+       if (pkg)
+               pakfire_package_unref(pkg);
+       if (repo)
+               pakfire_repo_unref(repo);
 
-       return err;
+       return r;
 }
 
 static int pakfire_archive_extract_entry(PakfireArchive archive,