When a package does not need to be downloaded but a signature does, total download didn't count that towards the total. diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 3919d266..a0861016 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -755,6 +755,11 @@ static int download_files(alpm_handle_t *handle) cachedir = _alpm_filecache_setup(handle); handle->trans->state = STATE_DOWNLOADING; + ret = find_dl_candidates(handle, &files); + if(ret != 0) { + goto finish; + } + /* Total progress - figure out the total download size if required to * pass to the callback. This function is called once, and it is up to the * frontend to compute incremental progress. */ @@ -762,21 +767,14 @@ static int download_files(alpm_handle_t *handle) 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) { + for(i = files; i; i = i->next) { alpm_pkg_t *spkg = i->data; total_size += spkg->download_size; - if(spkg->download_size > 0) { - howmany++; - } + howmany++; } handle->totaldlcb(howmany, total_size); } - ret = find_dl_candidates(handle, &files); - if(ret != 0) { - goto finish; - } - if(files) { /* check for necessary disk space for download */ if(handle->checkspace) { -- 2.30.0