aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/fetch
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2003-03-11 08:21:51 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2003-03-11 08:21:51 +0000
commit29568c01916dde036ede945683b7a9d02f489592 (patch)
treeaadb14e1966abcfd95365ff3bd6a6a5090d6d22d /usr.bin/fetch
parent1bbb80b674ce58e4a8b9f6a2b72e2b99882a1c0c (diff)
downloadsrc-29568c01916dde036ede945683b7a9d02f489592.tar.gz
src-29568c01916dde036ede945683b7a9d02f489592.zip
Clean up the ETA logic a bit and make sure it works for restarted transfers.
Notes
Notes: svn path=/head/; revision=112083
Diffstat (limited to 'usr.bin/fetch')
-rw-r--r--usr.bin/fetch/fetch.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/usr.bin/fetch/fetch.c b/usr.bin/fetch/fetch.c
index a9bb328e2bb4..087d09c0113b 100644
--- a/usr.bin/fetch/fetch.c
+++ b/usr.bin/fetch/fetch.c
@@ -125,16 +125,17 @@ struct xferstat {
static void
stat_eta(struct xferstat *xs)
{
- long elapsed, remaining;
+ long elapsed, received, expected, eta;
elapsed = xs->last.tv_sec - xs->start.tv_sec;
- remaining = ((xs->size * elapsed) / xs->rcvd) - elapsed;
- if (remaining > 3600) {
- fprintf(stderr, "%02ld:", remaining / 3600);
- remaining %= 3600;
+ received = xs->rcvd - xs->offset;
+ expected = xs->size - xs->rcvd;
+ eta = (elapsed * expected) / received;
+ if (eta > 3600) {
+ fprintf(stderr, "%02ld:", eta / 3600);
+ eta %= 3600;
}
- fprintf(stderr, "%02ld:%02ld",
- remaining / 60, remaining % 60);
+ fprintf(stderr, "%02ld:%02ld", eta / 60, eta % 60);
}
/*