progress meter: display >999 hours ETA correctly

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2011-02-10 23:35:52 +01:00
parent f836f01cc3
commit 838d4bb0cd

View File

@ -156,7 +156,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
kiloscale++; kiloscale++;
} }
/* see http://en.wikipedia.org/wiki/Tera */ /* see http://en.wikipedia.org/wiki/Tera */
fprintf(stderr, "%6u%c ", (unsigned)beg_and_transferred, " kMGTPEZY"[kiloscale]); fprintf(stderr, "%6u%c", (unsigned)beg_and_transferred, " kMGTPEZY"[kiloscale]);
#define beg_and_transferred dont_use_beg_and_transferred_below() #define beg_and_transferred dont_use_beg_and_transferred_below()
if (transferred != p->lastsize) { if (transferred != p->lastsize) {
@ -175,7 +175,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
if (since_last_update >= STALLTIME) { if (since_last_update >= STALLTIME) {
fprintf(stderr, " - stalled -"); fprintf(stderr, " - stalled -");
} else if (!totalsize || !transferred || (int)elapsed <= 0) { } else if (!totalsize || !transferred || (int)elapsed <= 0) {
fprintf(stderr, "--:--:-- ETA"); fprintf(stderr, " --:--:-- ETA");
} else { } else {
unsigned eta, secs, hours; unsigned eta, secs, hours;
@ -188,8 +188,10 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
* totalsize * elapsed / transferred - elapsed * totalsize * elapsed / transferred - elapsed
*/ */
eta = totalsize * elapsed / transferred - elapsed; eta = totalsize * elapsed / transferred - elapsed;
if (eta >= 1000*60*60)
eta = 1000*60*60 - 1;
secs = eta % 3600; secs = eta % 3600;
hours = eta / 3600; hours = eta / 3600;
fprintf(stderr, "%02u:%02u:%02u ETA", hours, secs / 60, secs % 60); fprintf(stderr, "%3u:%02u:%02u ETA", hours, secs / 60, secs % 60);
} }
} }