diff options
author | Carl Worth <cworth@cworth.org> | 2010-01-09 17:38:23 -0800 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2010-01-09 17:38:23 -0800 |
commit | c340c1bd1140c0a1b7e0f24ef3ebac806f5fc3e6 (patch) | |
tree | f9b2fa23adbe5b62812a87327704d141fe7247fc /notmuch-new.c | |
parent | ccf2e0cc4211c276da1db43cdca7ee11018c391d (diff) |
notmuch new: Print upgrade progress report as a percentage.
Previously we were printing a number of messages upgraded so far. The
original motivation for this was to accurately reflect the fact that
there are two passes, (so each message is processed twice and it's not
accurate to represent with a single count). But as it turns out, the
second pass takes zero time (relatively speaking) so we're still not
accounting for it.
If nothing else, the percentage-based reporting makes for a cleaner
API for the progress_notify function.
Diffstat (limited to 'notmuch-new.c')
-rw-r--r-- | notmuch-new.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/notmuch-new.c b/notmuch-new.c index 55c3dc1..b740ee2 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -618,22 +618,26 @@ count_files (const char *path, int *count) static void upgrade_print_progress (void *closure, - unsigned int count, - unsigned int total) + double progress) { add_files_state_t *state = closure; - struct timeval tv_now; - double elapsed_overall, rate_overall, time_remaining; - gettimeofday (&tv_now, NULL); + printf ("Upgrading database: %.2f%% complete", progress * 100.0); - elapsed_overall = notmuch_time_elapsed (state->tv_start, tv_now); - rate_overall = count / elapsed_overall; - time_remaining = ((total - count) / rate_overall); + if (progress > 0) { + struct timeval tv_now; + double elapsed, time_remaining; + + gettimeofday (&tv_now, NULL); + + elapsed = notmuch_time_elapsed (state->tv_start, tv_now); + time_remaining = (elapsed / progress) * (1.0 - progress); + printf (" ("); + notmuch_time_print_formatted_seconds (time_remaining); + printf (" remaining)"); + } - printf ("Upgraded %d of %d messages (", count, total); - notmuch_time_print_formatted_seconds (time_remaining); - printf (" remaining). \r"); + printf (". \r"); fflush (stdout); } |