From 793e2097a6f46bbc5048c540e32a4caf92a6836a Mon Sep 17 00:00:00 2001 From: morganamilo Date: Fri, 1 Jan 2021 16:57:47 +0000 Subject: libalpm: pass the number of packages being downloaded in totaldlcb Signed-off-by: Allan McRae --- lib/libalpm/alpm.h | 3 ++- lib/libalpm/sync.c | 6 +++++- src/pacman/callback.c | 3 ++- src/pacman/callback.h | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 63d885b8..dd0036f8 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -1189,9 +1189,10 @@ typedef void (*alpm_cb_download)(const char *filename, /** Total Download callback. + * @param howmany the number of packages that will be downloaded during \link alpm_trans_commit \endlink. * @param total amount that will be downloaded during \link alpm_trans_commit \endlink. */ -typedef void (*alpm_cb_totaldl)(off_t total); +typedef void (*alpm_cb_totaldl)(size_t howmany, off_t total); /** A callback for downloading files * @param url the URL of the file to be downloaded diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index e25e56d4..3919d266 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -760,12 +760,16 @@ static int download_files(alpm_handle_t *handle) * frontend to compute incremental progress. */ if(handle->totaldlcb) { off_t total_size = (off_t)0; + size_t howmany = 0; /* sum up the download size for each package and store total */ for(i = handle->trans->add; i; i = i->next) { alpm_pkg_t *spkg = i->data; total_size += spkg->download_size; + if(spkg->download_size > 0) { + howmany++; + } } - handle->totaldlcb(total_size); + handle->totaldlcb(howmany, total_size); } ret = find_dl_candidates(handle, &files); diff --git a/src/pacman/callback.c b/src/pacman/callback.c index 6ed7557a..f11382a0 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -694,8 +694,9 @@ void cb_progress(alpm_progress_t event, const char *pkgname, int percent, } /* callback to handle receipt of total download value */ -void cb_dl_total(off_t total) +void cb_dl_total(size_t howmany, off_t total) { + (void)howmany; list_total = total; } diff --git a/src/pacman/callback.h b/src/pacman/callback.h index 09d544a6..508c96b3 100644 --- a/src/pacman/callback.h +++ b/src/pacman/callback.h @@ -36,7 +36,7 @@ void cb_progress(alpm_progress_t event, const char *pkgname, int percent, size_t howmany, size_t remain); /* callback to handle receipt of total download value */ -void cb_dl_total(off_t total); +void cb_dl_total(size_t howmany, off_t total); /* callback to handle display of download progress */ void cb_download(const char *filename, alpm_download_event_type_t event, void *data); -- cgit v1.2.3-54-g00ecf