On 17/1/21 3:12 am, morganamilo wrote:
> When a package does not need to be downloaded but a signature does,
> total download didn't count that towards the total.
> 

Thanks - this is an improvement, so I will push to master.

There are still some weird things with packages without signature.  e.g.
a single package download shows the TotalDownload bar, but a package
just missing a signature does not.   However, packages without
signatures do add to the count otherwise.

I guess that will be fixed when the "is up to date" message becomes a
bar or is otherwise fixed.

Allan

> 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) {
> 

Reply via email to