diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2003-03-11 08:21:51 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2003-03-11 08:21:51 +0000 |
commit | 29568c01916dde036ede945683b7a9d02f489592 (patch) | |
tree | aadb14e1966abcfd95365ff3bd6a6a5090d6d22d /usr.bin/fetch | |
parent | 1bbb80b674ce58e4a8b9f6a2b72e2b99882a1c0c (diff) | |
download | src-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.c | 15 |
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); } /* |