Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a1ee31a2325b776c119c2a24d137a1cf5411c676
commit a1ee31a2325b776c119c2a24d137a1cf5411c676 Author: Michel Hermier <herm...@frugalware.org> Date: Fri Nov 29 00:38:14 2013 +0100 libpacman: Fix thinko, add handling of download end. diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c index a2e504e..00a334c 100644 --- a/lib/libpacman/server.c +++ b/lib/libpacman/server.c @@ -128,7 +128,7 @@ typedef enum __pmdownloadsuccess_t pmdownloadsuccess_t; struct __pmcurldownloader_t { CURL *curl; struct timeval previous_update; - size_t previous_update_dltotal; + size_t previous_update_dlnow; pmdownload_t download; }; @@ -154,11 +154,14 @@ int _pacman_curl_progresscb(void *clientp, double dltotal, double dlnow, double download->dst_tell = download->dst_resume + dlnow; download->dst_size = download->dst_resume + dltotal; download->dst_avg = dltotal / f_difftimeval(now, download->dst_begin); - if((time_delta = f_difftimeval(now, curldownloader->previous_update)) > 1) { - download->dst_rate = (dltotal - curldownloader->previous_update_dltotal) / time_delta; + if(download->dst_size == download->dst_tell) { + download->dst_end = now; + download->dst_eta = download->dst_rate = 0; + } else if((time_delta = f_difftimeval(now, curldownloader->previous_update)) > 1) { + download->dst_rate = (dlnow - curldownloader->previous_update_dlnow) / time_delta; download->dst_eta = (download->dst_size - download->dst_tell) / download->dst_rate; curldownloader->previous_update = now; - curldownloader->previous_update_dltotal = dltotal; + curldownloader->previous_update_dlnow = dlnow; } pm_dlcb(download); } _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git