new: Print progress estimates only when we have sufficient information
authorMichal Sojka <sojkam1@fel.cvut.cz>
Wed, 26 Jan 2011 13:06:57 +0000 (14:06 +0100)
committerCarl Worth <cworth@cworth.org>
Wed, 26 Jan 2011 13:47:51 +0000 (23:47 +1000)
Without this patch, it might happen that the remaining time or processing
rate were calculated just after start where nothing was processed yet.
This resulted into division by a very small number (or zero) and the
printed information was of little value.

Instead of printing nonsenses we print only that the operation is in
progress. The estimates will be printed later, after there is enough data.

notmuch-new.c

index 1473d2e69449c80e596b0440bbd6269c31d8fd61..941f9d615a44ce07521395db331a9c6b7d11b6c4 100644 (file)
@@ -117,15 +117,19 @@ generic_print_progress (const char *action, const char *object,
     printf ("%s %d ", action, processed);
 
     if (total) {
-       double time_remaining;
-
-       time_remaining = ((total - processed) / rate_overall);
-       printf ("of %d %s (", total, object);
-       notmuch_time_print_formatted_seconds (time_remaining);
-       printf (" remaining).\033[K\r");
+       printf ("of %d %s", total, object);
+       if (processed > 0 && elapsed_overall > 0.5) {
+           double time_remaining = ((total - processed) / rate_overall);
+           printf (" (");
+           notmuch_time_print_formatted_seconds (time_remaining);
+           printf (" remaining)");
+       }
     } else {
-       printf ("%s (%d %s/sec.)\033[K\r", object, (int) rate_overall, object);
+       printf ("%s", object);
+       if (elapsed_overall > 0.5)
+           printf (" (%d %s/sec.)", (int) rate_overall, object);
     }
+    printf (".\033[K\r");
 
     fflush (stdout);
 }