From c340c1bd1140c0a1b7e0f24ef3ebac806f5fc3e6 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Sat, 9 Jan 2010 17:38:23 -0800 Subject: 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. --- notmuch-new.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'notmuch-new.c') 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); } -- cgit v1.2.3