From: Michael Tremer Date: Tue, 20 Apr 2021 10:07:15 +0000 (+0000) Subject: downloader: Hide progressbar when downloading metadata X-Git-Tag: 0.9.28~1285^2~307 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=868d9934456665769772e6ebf3fe0839018dfd69;p=pakfire.git downloader: Hide progressbar when downloading metadata Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/dist.c b/src/libpakfire/dist.c index 9bcdc6ea2..c4bd2b4c2 100644 --- a/src/libpakfire/dist.c +++ b/src/libpakfire/dist.c @@ -168,7 +168,7 @@ static int pakfire_dist_add_source(Pakfire pakfire, struct pakfire_packager* pac // Download the file if it does not exist in the cache if (access(cache_path, R_OK) != 0) { r = pakfire_downloader_retrieve(downloader, BASEURL, mirrorlist, - NULL, filename, cache_path); + NULL, filename, cache_path, 0); if (r) return r; } diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index f33cbfbe3..29d7ea0df 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -57,6 +57,7 @@ struct pakfire_transfer { char title[NAME_MAX]; char url[PATH_MAX]; char path[PATH_MAX]; + enum pakfire_transfer_flags flags; int tries; // Temporary file @@ -236,7 +237,7 @@ static int debug_callback(CURL *handle, curl_infotype type, static struct pakfire_transfer* pakfire_downloader_create_transfer( struct pakfire_downloader* downloader, const char* baseurl, struct pakfire_mirrorlist* mirrors, - const char* title, const char* url, const char* path) { + const char* title, const char* url, const char* path, enum pakfire_transfer_flags flags) { DEBUG(downloader->pakfire, "Adding download of %s\n", url); // Reset baseurl it points to an empty string @@ -281,6 +282,9 @@ static struct pakfire_transfer* pakfire_downloader_create_transfer( if (mirrors) transfer->mirrors = pakfire_mirrorlist_ref(mirrors); + // Copy flags + transfer->flags = flags; + // Allocate handle transfer->handle = curl_easy_init(); if (!transfer->handle) @@ -315,9 +319,9 @@ ERROR: int pakfire_downloader_add_transfer(struct pakfire_downloader* downloader, const char* baseurl, struct pakfire_mirrorlist* mirrors, const char* title, - const char* url, const char* path) { + const char* url, const char* path, enum pakfire_transfer_flags flags) { struct pakfire_transfer* transfer = pakfire_downloader_create_transfer( - downloader, baseurl, mirrors, title, url, path); + downloader, baseurl, mirrors, title, url, path, flags); if (!transfer) return 1; @@ -651,12 +655,15 @@ static int pakfire_downloader_make_single_progressbar( */ static int pakfire_downloader_perform( struct pakfire_downloader* downloader, struct pakfire_transfer* transfer) { + const int has_progress = !(transfer->flags & PAKFIRE_TRANSFER_NOPROGRESS); int r; // Create progressbar - r = pakfire_downloader_make_single_progressbar(downloader, transfer); - if (r) - return r; + if (has_progress) { + r = pakfire_downloader_make_single_progressbar(downloader, transfer); + if (r) + return r; + } AGAIN: // Prepare the transfer @@ -675,16 +682,17 @@ AGAIN: goto AGAIN; // Finish the progressbar - pakfire_progressbar_finish(downloader->progressbar); + if (has_progress) + pakfire_progressbar_finish(downloader->progressbar); return r; } int pakfire_downloader_retrieve(struct pakfire_downloader* downloader, const char* baseurl, struct pakfire_mirrorlist* mirrors, const char* title, - const char* url, const char* path) { + const char* url, const char* path, enum pakfire_transfer_flags flags) { struct pakfire_transfer* transfer = pakfire_downloader_create_transfer( - downloader, baseurl, mirrors, title, url, path); + downloader, baseurl, mirrors, title, url, path, flags); if (!transfer) return 1; diff --git a/src/libpakfire/include/pakfire/downloader.h b/src/libpakfire/include/pakfire/downloader.h index b24c5eb8b..0044c0407 100644 --- a/src/libpakfire/include/pakfire/downloader.h +++ b/src/libpakfire/include/pakfire/downloader.h @@ -28,6 +28,11 @@ struct pakfire_downloader; struct pakfire_mirrorlist; +enum pakfire_transfer_flags { + PAKFIRE_TRANSFER_NONE = 0, + PAKFIRE_TRANSFER_NOPROGRESS = (1 << 0), +}; + int pakfire_downloader_create(struct pakfire_downloader** downloader, Pakfire pakfire); struct pakfire_downloader* pakfire_downloader_ref(struct pakfire_downloader* downloader); @@ -35,10 +40,10 @@ struct pakfire_downloader* pakfire_downloader_unref(struct pakfire_downloader* d int pakfire_downloader_retrieve(struct pakfire_downloader* downloader, const char* baseurl, struct pakfire_mirrorlist* mirrors, const char* title, - const char* url, const char* path); + const char* url, const char* path, enum pakfire_transfer_flags flags); int pakfire_downloader_add_transfer(struct pakfire_downloader* downloader, const char* baseurl, struct pakfire_mirrorlist* mirrors, const char* title, - const char* url, const char* path); + const char* url, const char* path, enum pakfire_transfer_flags flags); int pakfire_downloader_run(struct pakfire_downloader* downloader); diff --git a/src/libpakfire/repo.c b/src/libpakfire/repo.c index 1bba7117e..e078149fb 100644 --- a/src/libpakfire/repo.c +++ b/src/libpakfire/repo.c @@ -175,7 +175,7 @@ struct pakfire_mirrorlist* pakfire_repo_get_mirrorlist(PakfireRepo repo) { } static int pakfire_repo_retrieve(PakfireRepo repo, const char* title, - const char* url, const char* path) { + const char* url, const char* path, enum pakfire_transfer_flags flags) { struct pakfire_mirrorlist* mirrorlist = NULL; struct pakfire_downloader* downloader; @@ -188,7 +188,7 @@ static int pakfire_repo_retrieve(PakfireRepo repo, const char* title, // Retrieve the database file r = pakfire_downloader_retrieve(downloader, repo->appdata->baseurl, mirrorlist, - title, url, path); + title, url, path, flags); if (mirrorlist) pakfire_mirrorlist_unref(mirrorlist); @@ -216,7 +216,7 @@ static int pakfire_repo_download_database(PakfireRepo repo, const char* database // Make download URL pakfire_string_format(database_url, "repodata/%s", database); - return pakfire_repo_retrieve(repo, title, database_url, cache_path); + return pakfire_repo_retrieve(repo, title, database_url, cache_path, 0); } static int pakfire_repo_read_metadata(PakfireRepo repo, const char* path, int refresh) { @@ -301,7 +301,7 @@ static int pakfire_repo_refresh_mirrorlist(PakfireRepo repo, const int force) { } return pakfire_repo_retrieve(repo, NULL, - repo->appdata->mirrorlist_url, repo->appdata->mirrorlist); + repo->appdata->mirrorlist_url, repo->appdata->mirrorlist, PAKFIRE_TRANSFER_NOPROGRESS); } static int pakfire_repo_refresh_metadata(PakfireRepo repo, const int force) { @@ -315,7 +315,8 @@ static int pakfire_repo_refresh_metadata(PakfireRepo repo, const int force) { } } - int r = pakfire_repo_retrieve(repo, NULL, "repodata/repomd.json", repo->appdata->metadata); + int r = pakfire_repo_retrieve(repo, NULL, + "repodata/repomd.json", repo->appdata->metadata, PAKFIRE_TRANSFER_NOPROGRESS); if (r) return r; diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index b690ba35d..88a9cb8a2 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -457,7 +457,7 @@ static int pakfire_transaction_download_package(PakfireTransaction transaction, // Add transfer to downloader r = pakfire_downloader_add_transfer(downloader, baseurl, mirrorlist, - nevra, filename, cache_path); + nevra, filename, cache_path, 0); ERROR: if (nevra)