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

Reply via email to