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