summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorRyo Nakamura <upa@haeena.net>2023-04-05 19:00:29 +0900
committerRyo Nakamura <upa@haeena.net>2023-04-05 19:00:29 +0900
commit575c920b6ef0b7760e05498ccb4af42881dcc672 (patch)
treeceacce487431cd0a45fea72c279d19ca6e2514b8 /src/main.c
parent1bd832a135d027243c0b0c1ea5a740f82d429cd1 (diff)
main: print elapsed time instead ETA at the end
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 893dfad..2866a18 100644
--- a/src/main.c
+++ b/src/main.c
@@ -421,7 +421,8 @@ double calculate_bps(size_t diff, struct timeval *b, struct timeval *a)
return (double)diff / calculate_timedelta(b, a);
}
-char *calculate_eta(size_t remain, size_t diff, struct timeval *b, struct timeval *a)
+char *calculate_eta(size_t remain, size_t diff, struct timeval *b, struct timeval *a,
+ bool final)
{
static char buf[16];
double elapsed = calculate_timedelta(b, a);
@@ -429,7 +430,10 @@ char *calculate_eta(size_t remain, size_t diff, struct timeval *b, struct timeva
if (diff == 0)
snprintf(buf, sizeof(buf), "--:-- ETA");
- else {
+ else if (final) {
+ snprintf(buf, sizeof(buf), "%02d:%02d ",
+ (int)(floor(elapsed / 60)), (int)round(elapsed) % 60);
+ } else {
eta = remain / (diff / elapsed);
snprintf(buf, sizeof(buf), "%02d:%02d ETA",
(int)floor(eta / 60), (int)round(eta) % 60);
@@ -474,7 +478,7 @@ void print_progress_bar(double percent, char *suffix)
}
void print_progress(struct timeval *b, struct timeval *a,
- size_t total, size_t last, size_t done)
+ size_t total, size_t last, size_t done, bool final)
{
char *bps_units[] = { "B/s ", "KB/s", "MB/s", "GB/s" };
char *byte_units[] = { "B ", "KB", "MB", "GB", "TB", "PB" };
@@ -509,7 +513,8 @@ void print_progress(struct timeval *b, struct timeval *a,
snprintf(suffix, sizeof(suffix), "%4lu%s/%lu%s %6.1f%s %s",
done_round, byte_units[byte_du], total_round, byte_units[byte_tu],
- bps, bps_units[bps_u], calculate_eta(total - done, done - last, b, a));
+ bps, bps_units[bps_u],
+ calculate_eta(total - done, done - last, b, a, final));
print_progress_bar(percent, suffix);
}
@@ -533,7 +538,7 @@ void print_stat_thread_cleanup(void *arg)
x.done = s.done;
/* print progress from the beginning */
- print_progress(&x.start, &x.after, x.total, 0, x.done);
+ print_progress(&x.start, &x.after, x.total, 0, x.done, true);
print_cli("\n"); /* final output */
}
@@ -572,7 +577,8 @@ void *print_stat_thread(void *arg)
x.total = s.total;
x.done = s.done;
- print_progress(&x.before, &x.after, x.total, x.last, x.done);
+ print_progress(&x.before, &x.after, x.total, x.last, x.done,
+ false);
x.before = x.after;
x.last = x.done;
}