X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-new.c;h=e32b92a51de1b8c0c9bd7797edc84229e8424ff5;hp=1616ee96aef197c03c07e92bf1b1b090f4af6361;hb=5736ea3027a5ebf9824997fa05d05dd74284d66a;hpb=986f6c98244610da6bba88d0c92895b9758973ee diff --git a/notmuch-new.c b/notmuch-new.c index 1616ee96..e32b92a5 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -20,6 +20,8 @@ #include "notmuch-client.h" +#include + static volatile sig_atomic_t do_add_files_print_progress = 0; static void @@ -157,6 +159,7 @@ add_files_recursive (notmuch_database_t *notmuch, * user specify files to be ignored. */ if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0 || + strcmp (entry->d_name, "tmp") == 0 || strcmp (entry->d_name, ".notmuch") ==0) { continue; @@ -177,6 +180,19 @@ add_files_recursive (notmuch_database_t *notmuch, if (path_dbtime == 0 || st->st_mtime > path_dbtime) { state->processed_files++; + if (state->verbose) { + if (state->output_is_a_tty) + printf("\r\033[K"); + + printf ("%i/%i: %s", + state->processed_files, + state->total_files, + next); + + putchar((state->output_is_a_tty) ? '\r' : '\n'); + fflush (stdout); + } + status = notmuch_database_add_message (notmuch, next, &message); switch (status) { /* success */ @@ -272,8 +288,8 @@ add_files (notmuch_database_t *notmuch, return NOTMUCH_STATUS_FILE_ERROR; } - /* Setup our handler for SIGALRM */ - if (! debugger_is_active ()) { + if (state->output_is_a_tty && ! debugger_is_active () && ! state->verbose) { + /* Setup our handler for SIGALRM */ memset (&action, 0, sizeof (struct sigaction)); action.sa_handler = handle_sigalrm; sigemptyset (&action.sa_mask); @@ -292,8 +308,8 @@ add_files (notmuch_database_t *notmuch, status = add_files_recursive (notmuch, path, &st, state); - /* Now stop the timer. */ if (timer_is_active) { + /* Now stop the timer. */ timerval.it_interval.tv_sec = 0; timerval.it_interval.tv_usec = 0; timerval.it_value.tv_sec = 0; @@ -378,8 +394,7 @@ count_files (const char *path, int *count) } int -notmuch_new_command (void *ctx, - unused (int argc), unused (char *argv[])) +notmuch_new_command (void *ctx, int argc, char *argv[]) { notmuch_config_t *config; notmuch_database_t *notmuch; @@ -391,6 +406,19 @@ notmuch_new_command (void *ctx, const char *db_path; char *dot_notmuch_path; struct sigaction action; + int i; + + add_files_state.verbose = 0; + add_files_state.output_is_a_tty = isatty (fileno (stdout)); + + for (i = 0; i < argc && argv[i][0] == '-'; i++) { + if (STRNCMP_LITERAL (argv[i], "--verbose") == 0) { + add_files_state.verbose = 1; + } else { + fprintf (stderr, "Unrecognized option: %s\n", argv[i]); + return 1; + } + } /* Setup our handler for SIGINT */ memset (&action, 0, sizeof (struct sigaction));