[pacman-dev] [PATCH 1/3] dload_progress_cb: cast values to off_t up front

Dave Reisner d at falconindy.com
Sun Jan 25 17:30:32 UTC 2015


On Jan 25, 2015 12:25 PM, "Andrew Gregory" <andrew.gregory.8 at gmail.com>
wrote:
>
> We only ever use them as off_t, so do the conversion early and avoid the
> need for multiple casts and DOUBLE_EQ.

I'd rather we use the newer XFERINFOFUNCTION (might have the name wrong)
which passes these as curl_off_t instead of double.

> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
> ---
>  lib/libalpm/dload.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
> index c5186be..cae4b7c 100644
> --- a/lib/libalpm/dload.c
> +++ b/lib/libalpm/dload.c
> @@ -94,7 +94,7 @@ static int dload_progress_cb(void *file, double
dltotal, double dlnow,
>                 double UNUSED ultotal, double UNUSED ulnow)
>  {
>         struct dload_payload *payload = (struct dload_payload *)file;
> -       off_t current_size, total_size;
> +       off_t current_size, total_size, xfer = dlnow, total = dltotal;
>
>         /* avoid displaying progress bar for redirects with a body */
>         if(payload->respcode >= 300) {
> @@ -106,7 +106,7 @@ static int dload_progress_cb(void *file, double
dltotal, double dlnow,
>                 return 1;
>         }
>
> -       current_size = payload->initial_size + (off_t)dlnow;
> +       current_size = payload->initial_size + xfer;
>
>         /* is our filesize still under any set limit? */
>         if(payload->max_size && current_size > payload->max_size) {
> @@ -119,21 +119,21 @@ static int dload_progress_cb(void *file, double
dltotal, double dlnow,
>                 return 0;
>         }
>
> -       total_size = payload->initial_size + (off_t)dltotal;
> +       total_size = payload->initial_size + total;
>
> -       if(DOUBLE_EQ(dltotal, 0.0) || payload->prevprogress ==
total_size) {
> +       if(total == 0 || payload->prevprogress == total_size) {
>                 return 0;
>         }
>
>         /* initialize the progress bar here to avoid displaying it when
>          * a repo is up to date and nothing gets downloaded */
>         if(payload->prevprogress == 0) {
> -               payload->handle->dlcb(payload->remote_name, 0,
(off_t)dltotal);
> +               payload->handle->dlcb(payload->remote_name, 0, total);
>         }
>
>         /* do NOT include initial_size since it wasn't part of the
package's
>          * download_size (nor included in the total download size
callback) */
> -       payload->handle->dlcb(payload->remote_name, (off_t)dlnow,
(off_t)dltotal);
> +       payload->handle->dlcb(payload->remote_name, xfer, total);
>
>         payload->prevprogress = current_size;
>
> --
> 2.2.1


More information about the pacman-dev mailing list