Mercurial > gftp.yaz
diff src/gtk/transfer.c @ 220:6de9a8280aa4
2003-7-10 Brian Masney <masneyb@gftp.org>
* lib/misc.c (insert_commas) - improved calculating # of digits
in number. (Not sure if this worked properly for long long's, aka
off_t when _LARGEFILE_SOURCE is defined)
* src/gtk/transfer.c (update_file_status) - changed type of remaining
field to be off_t. (hopefully fixes >2.1GB problem)
* lib/protocols.c (gftp_calc_kbs) - improved throttling module.
author | masneyb |
---|---|
date | Fri, 11 Jul 2003 01:48:08 +0000 |
parents | cf4098008615 |
children | 251845fc1ef1 |
line wrap: on
line diff
--- a/src/gtk/transfer.c Wed Jul 09 23:25:57 2003 +0000 +++ b/src/gtk/transfer.c Fri Jul 11 01:48:08 2003 +0000 @@ -1293,7 +1293,7 @@ { char totstr[100], dlstr[100], gotstr[50], ofstr[50]; int hours, mins, secs, pcent, st; - double remaining; + off_t remaining_secs; gftp_file * tempfle; struct timeval tv; @@ -1301,15 +1301,16 @@ tempfle = tdata->curfle->data; gettimeofday (&tv, NULL); - if ((remaining = (double) (tv.tv_sec - tdata->starttime.tv_sec) + ((double) (tv.tv_usec - tdata->starttime.tv_usec) / 1000000.0)) == 0) - remaining = 1.0; + + remaining_secs = (tdata->total_bytes - tdata->trans_bytes - tdata->resumed_bytes) / 1024; + if (tdata->kbs > 0) + remaining_secs /= (off_t) tdata->kbs; - remaining = ((double) (tdata->total_bytes - tdata->trans_bytes - tdata->resumed_bytes)) / 1024.0 / tdata->kbs; - hours = (off_t) remaining / 3600; - remaining -= hours * 3600; - mins = (off_t) remaining / 60; - remaining -= mins * 60; - secs = (off_t) remaining; + hours = remaining_secs / 3600; + remaining_secs -= hours * 3600; + mins = remaining_secs / 60; + remaining_secs -= mins * 60; + secs = remaining_secs; if (hours < 0 || mins < 0 || secs < 0) { @@ -1336,12 +1337,15 @@ { if (tdata->curfle->next != NULL) { - remaining = ((double) (tempfle->size - tdata->curtrans - tdata->curresumed)) / 1024.0 / tdata->kbs; - hours = (off_t) remaining / 3600; - remaining -= hours * 3600; - mins = (off_t) remaining / 60; - remaining -= mins * 60; - secs = (off_t) remaining; + remaining_secs = (tempfle->size - tdata->curtrans - tdata->curresumed) / 1024; + if (tdata->kbs > 0) + remaining_secs /= (off_t) tdata->kbs; + + hours = remaining_secs / 3600; + remaining_secs -= hours * 3600; + mins = remaining_secs / 60; + remaining_secs -= mins * 60; + secs = remaining_secs; } if (!(hours < 0 || mins < 0 || secs < 0))