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,