aboutsummaryrefslogtreecommitdiff
path: root/notmuch-new.c
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-01-09 17:38:23 -0800
committerCarl Worth <cworth@cworth.org>2010-01-09 17:38:23 -0800
commitc340c1bd1140c0a1b7e0f24ef3ebac806f5fc3e6 (patch)
treef9b2fa23adbe5b62812a87327704d141fe7247fc /notmuch-new.c
parentccf2e0cc4211c276da1db43cdca7ee11018c391d (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.c26
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);
}