[prev in list] [next in list] [prev in thread] [next in thread]
List: wget
Subject: Re: Addition to problems with progress on large files
From: Hrvoje Niksic <hniksic () xemacs ! org>
Date: 2007-01-23 21:31:01
Message-ID: 87tzyhbfca.fsf () busola ! homelinux ! net
[Download RAW message or body]
Thanks for the report. This patch fixes the problem:
2007-01-23 Hrvoje Niksic <hniksic@xemacs.org>
* progress.c (create_image): Check for ETA overflow.
(print_row_stats): Ditto.
Index: src/progress.c
===================================================================
--- src/progress.c (revision 2202)
+++ src/progress.c (working copy)
@@ -320,8 +320,10 @@
wgint bytes_remaining = dp->total_length - bytes_displayed;
/* The quantity downloaded in this download run. */
wgint bytes_sofar = bytes_displayed - dp->initial_length;
- int eta = (int) (dltime * bytes_remaining / bytes_sofar + 0.5);
- logprintf (LOG_VERBOSE, " %s", eta_to_human_short (eta, true));
+ double eta = dltime * bytes_remaining / bytes_sofar;
+ if (eta < INT_MAX - 1)
+ logprintf (LOG_VERBOSE, " %s",
+ eta_to_human_short ((int) (eta + 0.5), true));
}
}
else
@@ -932,7 +934,10 @@
I found that doing that results in a very jerky and
ultimately unreliable ETA. */
wgint bytes_remaining = bp->total_length - size;
- eta = (int) (dl_total_time * bytes_remaining / bp->count + 0.5);
+ double eta_ = dl_total_time * bytes_remaining / bp->count;
+ if (eta_ >= INT_MAX - 1)
+ goto skip_eta;
+ eta = (int) (eta_ + 0.5);
bp->last_eta_value = eta;
bp->last_eta_time = dl_total_time;
}
@@ -944,6 +949,7 @@
}
else if (bp->total_length > 0)
{
+ skip_eta:
APPEND_LITERAL (" ");
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic