From 366b832e3f608dfb44e2d21af7de74ba326a7a02 Mon Sep 17 00:00:00 2001 From: hniksic Date: Sat, 10 Feb 2001 16:00:30 -0800 Subject: [PATCH] [svn] Applied Jonas Jensen's download rate patch with my additions. Published in <015b01c09084$ce2d9330$0100000a@bob> and . --- src/ChangeLog | 21 +++++++++++++++++++++ src/ftp.c | 4 ++-- src/http.c | 2 +- src/retr.c | 42 ++++++++++++++++++++++++++++++------------ src/retr.h | 2 +- 5 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 65ce1779..6694febd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,24 @@ +2001-02-11 Hrvoje Niksic + + * 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 + + * retr.c (show_progress): Make sure that the last output line + includes progress. + +2001-02-10 Jonas Jensen + + * retr.c (show_progress): Print the download rate along with the + percentages. + 2001-02-10 Tim Mooney * ftp.h: Rename enums `command' to `wget_ftp_command' and diff --git a/src/ftp.c b/src/ftp.c index 74efff5e..e85cc4be 100644 --- 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; diff --git a/src/http.c b/src/http.c index b8151ea2..01316292 100644 --- a/src/http.c +++ b/src/http.c @@ -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) { diff --git a/src/retr.c b/src/retr.c index 3334ced8..0e4535e8 100644 --- a/src/retr.c +++ b/src/retr.c @@ -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; } diff --git a/src/retr.h b/src/retr.h index 90c4b7b2..c69c493e 100644 --- a/src/retr.h +++ b/src/retr.h @@ -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)); -- 2.39.2