notmuch: Reword the progress report slightly.
authorCarl Worth <cworth@cworth.org>
Tue, 20 Oct 2009 01:30:48 +0000 (18:30 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 20 Oct 2009 01:30:48 +0000 (18:30 -0700)
I noticed this style during a recent Debian install and I liked
how much less busy it is compared to what we had before, (while
still telling the user everything she might want).

notmuch.c

index 5853fe55fe0f3b6c9d2a8f842a72809269298e97..91ea34513f6076616fbd6557504d2ab109f1f714 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -79,11 +79,9 @@ read_line (void)
 }
 
 typedef struct {
-    int messages_total;
+    int total_messages;
     int count;
-    int count_last;
     struct timeval tv_start;
-    struct timeval tv_last;
 } add_files_state_t;
 
 /* Compute the number of seconds elapsed from start to end. */
@@ -102,47 +100,37 @@ print_formatted_seconds (double seconds)
 
     if (seconds > 3600) {
        hours = (int) seconds / 3600;
-       printf ("%d:", hours);
+       printf ("%d", hours);
        seconds -= hours * 3600;
     }
 
-    if (seconds > 60)
+    if (seconds > 60) {
        minutes = (int) seconds / 60;
-    else
-       minutes = 0;
-
-    printf ("%02d:", minutes);
-    seconds -= minutes * 60;
+       printf ("%dm ", minutes);
+       seconds -= minutes * 60;
+    }
 
-    printf ("%02d", (int) seconds);
+    printf ("%02ds", (int) seconds);
 }
 
 void
 add_files_print_progress (add_files_state_t *state)
 {
     struct timeval tv_now;
-    double ratio_complete;
-    double elapsed_current, rate_current;
-    double elapsed_overall;
+    double elapsed_overall, rate_overall;
 
     gettimeofday (&tv_now, NULL);
 
-    ratio_complete = (double) state->count / state->messages_total;
-    elapsed_current = tv_elapsed (state->tv_last, tv_now);
-    rate_current = (state->count - state->count_last) / elapsed_current;
     elapsed_overall = tv_elapsed (state->tv_start, tv_now);
+    rate_overall = (state->count) / elapsed_overall;
 
-    printf ("Added %d messages at %d messages/sec. ",
-           state->count, (int) rate_current);
-    print_formatted_seconds (elapsed_overall);
-    printf ("/");
-    print_formatted_seconds (elapsed_overall / ratio_complete);
-    printf (" elapsed (%.2f%%).     \r", 100 * ratio_complete);
+    printf ("Added %d of %d messages (",
+           state->count, state->total_messages);
+    print_formatted_seconds ((state->total_messages - state->count) /
+                            rate_overall);
+    printf (" remaining).\r");
 
     fflush (stdout);
-
-    state->tv_last = tv_now;
-    state->count_last = state->count;
 }
 
 /* Recursively find all regular files in 'path' and add them to the
@@ -295,6 +283,7 @@ setup_command (int argc, char *argv[])
     int count;
     add_files_state_t add_files_state;
     double elapsed;
+    struct timeval tv_now;
 
     printf ("Welcome to notmuch!\n\n");
 
@@ -353,17 +342,15 @@ setup_command (int argc, char *argv[])
 
     printf ("Next, we'll inspect the messages and create a database of threads:\n");
 
-    add_files_state.messages_total = count;
+    add_files_state.total_messages = count;
     add_files_state.count = 0;
-    add_files_state.count_last = 0;
     gettimeofday (&add_files_state.tv_start, NULL);
-    add_files_state.tv_last = add_files_state.tv_start;
 
     add_files (notmuch, mail_directory, &add_files_state);
 
-    gettimeofday (&add_files_state.tv_last, NULL);
+    gettimeofday (&tv_now, NULL);
     elapsed = tv_elapsed (add_files_state.tv_start,
-                         add_files_state.tv_last);
+                         tv_now);
     printf ("Added %d total messages in ", add_files_state.count);
     print_formatted_seconds (elapsed);
     printf (" (%d messages/sec.).                 \n", (int) (add_files_state.count / elapsed));