mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] Applied Jonas Jensen's download rate patch with my additions.
Published in <015b01c09084$ce2d9330$0100000a@bob> and <sxspugq3xai.fsf@florida.arsdigita.de>.
This commit is contained in:
parent
fdc20de365
commit
366b832e3f
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
40
src/retr.c
40
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user