mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
notmuch setup: Clean up the progress printing a bit.
Get rid of a useless leading 0 on the seconds value, and make a distinction between "files" and "messages", (we process many files, but not all of them are recongized as messages). Finally, add a summary line at the end saying how many unique messages were added to the database. Since this comes right after the total number of files, it gives the user at least a hint as to how many messages were encountered with duplicate message IDs.
This commit is contained in:
parent
fd11c8e150
commit
a7a897b883
1 changed files with 31 additions and 16 deletions
43
notmuch.c
43
notmuch.c
|
@ -54,8 +54,9 @@ typedef struct command {
|
||||||
} command_t;
|
} command_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int total_messages;
|
int total_files;
|
||||||
int count;
|
int processed_files;
|
||||||
|
int added_messages;
|
||||||
struct timeval tv_start;
|
struct timeval tv_start;
|
||||||
} add_files_state_t;
|
} add_files_state_t;
|
||||||
|
|
||||||
|
@ -92,7 +93,7 @@ print_formatted_seconds (double seconds)
|
||||||
seconds -= minutes * 60;
|
seconds -= minutes * 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("%02ds", (int) seconds);
|
printf ("%ds", (int) seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -104,13 +105,18 @@ add_files_print_progress (add_files_state_t *state)
|
||||||
gettimeofday (&tv_now, NULL);
|
gettimeofday (&tv_now, NULL);
|
||||||
|
|
||||||
elapsed_overall = tv_elapsed (state->tv_start, tv_now);
|
elapsed_overall = tv_elapsed (state->tv_start, tv_now);
|
||||||
rate_overall = (state->count) / elapsed_overall;
|
rate_overall = (state->processed_files) / elapsed_overall;
|
||||||
|
|
||||||
printf ("Added %d of %d messages (",
|
printf ("Processed %d", state->processed_files);
|
||||||
state->count, state->total_messages);
|
|
||||||
print_formatted_seconds ((state->total_messages - state->count) /
|
if (state->total_files) {
|
||||||
|
printf (" of %d files (", state->total_files);
|
||||||
|
print_formatted_seconds ((state->total_files - state->processed_files) /
|
||||||
rate_overall);
|
rate_overall);
|
||||||
printf (" remaining). \r");
|
printf (" remaining). \r");
|
||||||
|
} else {
|
||||||
|
printf (" files (%d files/sec.) \r", (int) rate_overall);
|
||||||
|
}
|
||||||
|
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
}
|
}
|
||||||
|
@ -170,14 +176,15 @@ add_files (notmuch_database_t *notmuch, const char *path,
|
||||||
stat (next, &st);
|
stat (next, &st);
|
||||||
|
|
||||||
if (S_ISREG (st.st_mode)) {
|
if (S_ISREG (st.st_mode)) {
|
||||||
|
state->processed_files++;
|
||||||
status = notmuch_database_add_message (notmuch, next);
|
status = notmuch_database_add_message (notmuch, next);
|
||||||
if (status == NOTMUCH_STATUS_FILE_NOT_EMAIL) {
|
if (status == NOTMUCH_STATUS_FILE_NOT_EMAIL) {
|
||||||
fprintf (stderr, "Note: Ignoring non-mail file: %s\n",
|
fprintf (stderr, "Note: Ignoring non-mail file: %s\n",
|
||||||
next);
|
next);
|
||||||
} else {
|
} else if (status != NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) {
|
||||||
state->count++;
|
state->added_messages++;
|
||||||
}
|
}
|
||||||
if (state->count % 1000 == 0)
|
if (state->processed_files % 1000 == 0)
|
||||||
add_files_print_progress (state);
|
add_files_print_progress (state);
|
||||||
} else if (S_ISDIR (st.st_mode)) {
|
} else if (S_ISDIR (st.st_mode)) {
|
||||||
add_files (notmuch, next, state);
|
add_files (notmuch, next, state);
|
||||||
|
@ -342,8 +349,9 @@ setup_command (int argc, char *argv[])
|
||||||
|
|
||||||
printf ("Next, we'll inspect the messages and create a database of threads:\n");
|
printf ("Next, we'll inspect the messages and create a database of threads:\n");
|
||||||
|
|
||||||
add_files_state.total_messages = count;
|
add_files_state.total_files = count;
|
||||||
add_files_state.count = 0;
|
add_files_state.processed_files = 0;
|
||||||
|
add_files_state.added_messages = 0;
|
||||||
gettimeofday (&add_files_state.tv_start, NULL);
|
gettimeofday (&add_files_state.tv_start, NULL);
|
||||||
|
|
||||||
add_files (notmuch, mail_directory, &add_files_state);
|
add_files (notmuch, mail_directory, &add_files_state);
|
||||||
|
@ -351,9 +359,16 @@ setup_command (int argc, char *argv[])
|
||||||
gettimeofday (&tv_now, NULL);
|
gettimeofday (&tv_now, NULL);
|
||||||
elapsed = tv_elapsed (add_files_state.tv_start,
|
elapsed = tv_elapsed (add_files_state.tv_start,
|
||||||
tv_now);
|
tv_now);
|
||||||
printf ("Added %d total messages in ", add_files_state.count);
|
printf ("Processed %d total files in ", add_files_state.processed_files);
|
||||||
print_formatted_seconds (elapsed);
|
print_formatted_seconds (elapsed);
|
||||||
printf (" (%d messages/sec.). \n", (int) (add_files_state.count / elapsed));
|
printf (" (%d files/sec.). \n",
|
||||||
|
(int) (add_files_state.processed_files / elapsed));
|
||||||
|
printf ("Added %d unique messages to the database.\n\n",
|
||||||
|
add_files_state.added_messages);
|
||||||
|
|
||||||
|
printf ("When new mail is delivered to %s in the future,\n"
|
||||||
|
"run \"notmuch new\" to add it to the database.\n",
|
||||||
|
mail_directory);
|
||||||
|
|
||||||
DONE:
|
DONE:
|
||||||
if (mail_directory)
|
if (mail_directory)
|
||||||
|
|
Loading…
Reference in a new issue