]> sjero.net Git - wget/commitdiff
[svn] Applied Jonas Jensen's download rate patch with my additions.
authorhniksic <devnull@localhost>
Sun, 11 Feb 2001 00:00:30 +0000 (16:00 -0800)
committerhniksic <devnull@localhost>
Sun, 11 Feb 2001 00:00:30 +0000 (16:00 -0800)
Published in <015b01c09084$ce2d9330$0100000a@bob> and
<sxspugq3xai.fsf@florida.arsdigita.de>.

src/ChangeLog
src/ftp.c
src/http.c
src/retr.c
src/retr.h

index 65ce1779e500dcde394130ae162a87ba1de96e4c..6694febd276e93a357f9e42ab827c6dc95945247 100644 (file)
@@ -1,3 +1,24 @@
+2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * ftp.c (ftp_loop_internal): Disable padding.
+       (getftp): Ditto.
+
+       * http.c (http_loop): Disable padding.
+
+       * retr.c (show_progress): Use it to enable padding.
+
+       * retr.c (rate): Optional parameter PAD for padding the rate.
+
+2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * retr.c (show_progress): Make sure that the last output line
+       includes progress.
+
+2001-02-10  Jonas Jensen  <bones@huleboer.dk>
+
+       * retr.c (show_progress): Print the download rate along with the
+       percentages.
+
 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
 
        * ftp.h: Rename enums `command' to `wget_ftp_command' and
index 74efff5e5263ba00efbc402b562b6d47057b6d2b..e85cc4beacb7a92be3cd047fa070bf31c8cfc524 100644 (file)
--- a/src/ftp.c
+++ b/src/ftp.c
@@ -839,7 +839,7 @@ Error in server response, closing control connection.\n"));
   res = get_contents (dtsock, fp, len, restval, expected_bytes, &con->rbuf, 0);
   con->dltime = elapsed_time ();
   tms = time_str (NULL);
-  tmrate = rate (*len - restval, con->dltime);
+  tmrate = rate (*len - restval, con->dltime, 0);
   /* Close data connection socket.  */
   closeport (dtsock);
   /* Close the local file.  */
@@ -1042,7 +1042,7 @@ ftp_loop_internal (struct urlinfo *u, struct fileinfo *f, ccon *con)
       err = getftp (u, &len, restval, con);
       /* Time?  */
       tms = time_str (NULL);
-      tmrate = rate (len - restval, con->dltime);
+      tmrate = rate (len - restval, con->dltime, 0);
 
       if (!rbuf_initialized_p (&con->rbuf))
        con->st &= ~DONE_CWD;
index b8151ea2f751cbbf280aa26502478e89709b7421..01316292e78e90681a788a9b1d72fa754823d29a 100644 (file)
@@ -1596,7 +1596,7 @@ The sizes do not match (local %ld) -- retrieving.\n"), local_size);
         strings within it will no longer be used.  */
       FREEHSTAT (hstat);
 
-      tmrate = rate (hstat.len - hstat.restval, hstat.dltime);
+      tmrate = rate (hstat.len - hstat.restval, hstat.dltime, 0);
 
       if (hstat.len == hstat.contlen)
        {
index 3334ced804e4b0a030d861c856ec821abacc6c7b..0e4535e8bfdad9a14da72ffb0f5ea9754c45e882 100644 (file)
@@ -1,5 +1,5 @@
 /* File retrieval.
-   Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
 
 This file is part of Wget.
 
@@ -156,7 +156,7 @@ static void
 print_percentage (long bytes, long expected)
 {
   int percentage = (int)(100.0 * bytes / expected);
-  logprintf (LOG_VERBOSE, " [%3d%%]", percentage);
+  logprintf (LOG_VERBOSE, "%3d%%", percentage);
 }
 
 /* Show the dotted progress report of file loading.  Called with
@@ -174,8 +174,9 @@ static int
 show_progress (long res, long expected, enum spflags flags)
 {
   static long line_bytes;
-  static long offs;
+  static long offs, initial_skip;
   static int ndot, nrow;
+  static long last_timer, time_offset;
   int any_output = 0;
 
   if (flags == SP_FINISH)
@@ -185,6 +186,7 @@ show_progress (long res, long expected, enum spflags flags)
          int dot = ndot;
          char *tmpstr = (char *)alloca (2 * opt.dots_in_line + 1);
          char *tmpp = tmpstr;
+         time_offset = elapsed_time () - last_timer;
          for (; dot < opt.dots_in_line; dot++)
            {
              if (!(dot % opt.dot_spacing))
@@ -195,6 +197,9 @@ show_progress (long res, long expected, enum spflags flags)
          logputs (LOG_VERBOSE, tmpstr);
          print_percentage (nrow * line_bytes + ndot * opt.dot_bytes + offs,
                            expected);
+         logprintf (LOG_VERBOSE, " @%s",
+                    rate (ndot * opt.dot_bytes + offs - initial_skip,
+                          time_offset, 1));
        }
       logputs (LOG_VERBOSE, "\n\n");
       return 0;
@@ -211,6 +216,9 @@ show_progress (long res, long expected, enum spflags flags)
       offs = 0L;
       ndot = nrow = 0;
       line_bytes = (long)opt.dots_in_line * opt.dot_bytes;
+      last_timer = elapsed_time ();
+      time_offset = 0;
+      initial_skip = res;
       if (res)
        {
          if (res >= line_bytes)
@@ -223,7 +231,7 @@ show_progress (long res, long expected, enum spflags flags)
              ndot = 0;
            }
        }
-      logprintf (LOG_VERBOSE, "\n%5ldK ->", nrow * line_bytes / 1024);
+      logprintf (LOG_VERBOSE, "\n%5ldK", nrow * line_bytes / 1024);
     }
   /* Offset gets incremented by current value.  */
   offs += res;
@@ -238,11 +246,19 @@ show_progress (long res, long expected, enum spflags flags)
       ++ndot;
       if (ndot == opt.dots_in_line)
        {
+         time_offset = elapsed_time () - last_timer;
+         last_timer += time_offset;
+
          ndot = 0;
          ++nrow;
          if (expected)
-           print_percentage (nrow * line_bytes, expected);
-         logprintf (LOG_VERBOSE, "\n%5ldK ->", nrow * line_bytes / 1024);
+           {
+             print_percentage (nrow * line_bytes, expected);
+             logprintf (LOG_VERBOSE, " @%s",
+                        rate (line_bytes - initial_skip, time_offset, 1));
+           }
+         initial_skip = 0;
+         logprintf (LOG_VERBOSE, "\n%5ldK", nrow * line_bytes / 1024);
        }
     }
   /* Reenable flushing.  */
@@ -310,9 +326,12 @@ elapsed_time (void)
 
 /* Print out the appropriate download rate.  Appropriate means that if
    rate is > 1024 bytes per second, kilobytes are used, and if rate >
-   1024 * 1024 bps, megabytes are used.  */
+   1024 * 1024 bps, megabytes are used.
+
+   If PAD is non-zero, strings will be padded to the width of 7
+   characters (xxxx.xx).  */
 char *
-rate (long bytes, long msecs)
+rate (long bytes, long msecs, int pad)
 {
   static char res[15];
   double dlrate;
@@ -320,13 +339,12 @@ rate (long bytes, long msecs)
   if (!msecs)
     ++msecs;
   dlrate = (double)1000 * bytes / msecs;
-  /* #### Should these strings be translatable?  */
   if (dlrate < 1024.0)
-    sprintf (res, "%.2f B/s", dlrate);
+    sprintf (res, pad ? "%7.2f B/s" : "%.2f B/s", dlrate);
   else if (dlrate < 1024.0 * 1024.0)
-    sprintf (res, "%.2f KB/s", dlrate / 1024.0);
+    sprintf (res, pad ? "%7.2f KB/s" : "%.2f KB/s", dlrate / 1024.0);
   else
-    sprintf (res, "%.2f MB/s", dlrate / (1024.0 * 1024.0));
+    sprintf (res, pad ? "%7.2f MB/s" : "%.2f MB/s", dlrate / (1024.0 * 1024.0));
   return res;
 }
 \f
index 90c4b7b2f462afcb26bf071cc97f028527e61769..c69c493eea1e4873ddd5ba52c231d37e936f442e 100644 (file)
@@ -30,7 +30,7 @@ uerr_t retrieve_from_file PARAMS ((const char *, int, int *));
 
 void reset_timer PARAMS ((void));
 long elapsed_time PARAMS ((void));
-char *rate PARAMS ((long, long));
+char *rate PARAMS ((long, long, int));
 
 void printwhat PARAMS ((int, int));