]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-new.c
notmuch-new: Only print the regular progress report when on a tty
[notmuch] / notmuch-new.c
index bc35b4e8cf32480e1a7d1cf87cb95d7b6e4e3e71..0dd27844d289470b84cbdeba9b375d832277331c 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "notmuch-client.h"
 
+#include <unistd.h>
+
 static volatile sig_atomic_t do_add_files_print_progress = 0;
 
 static void
@@ -259,6 +261,7 @@ add_files (notmuch_database_t *notmuch,
     notmuch_status_t status;
     struct sigaction action;
     struct itimerval timerval;
+    notmuch_bool_t timer_is_active = FALSE;
 
     if (stat (path, &st)) {
        fprintf (stderr, "Error reading directory %s: %s\n",
@@ -272,31 +275,37 @@ add_files (notmuch_database_t *notmuch,
     }
 
     /* Setup our handler for SIGALRM */
-    memset (&action, 0, sizeof (struct sigaction));
-    action.sa_handler = handle_sigalrm;
-    sigemptyset (&action.sa_mask);
-    action.sa_flags = SA_RESTART;
-    sigaction (SIGALRM, &action, NULL);
-
-    /* Then start a timer to send SIGALRM once per second. */
-    timerval.it_interval.tv_sec = 1;
-    timerval.it_interval.tv_usec = 0;
-    timerval.it_value.tv_sec = 1;
-    timerval.it_value.tv_usec = 0;
-    setitimer (ITIMER_REAL, &timerval, NULL);
+    if (isatty (fileno (stdout)) && ! debugger_is_active ()) {
+       memset (&action, 0, sizeof (struct sigaction));
+       action.sa_handler = handle_sigalrm;
+       sigemptyset (&action.sa_mask);
+       action.sa_flags = SA_RESTART;
+       sigaction (SIGALRM, &action, NULL);
+
+       /* Then start a timer to send SIGALRM once per second. */
+       timerval.it_interval.tv_sec = 1;
+       timerval.it_interval.tv_usec = 0;
+       timerval.it_value.tv_sec = 1;
+       timerval.it_value.tv_usec = 0;
+       setitimer (ITIMER_REAL, &timerval, NULL);
+
+       timer_is_active = TRUE;
+    }
 
     status = add_files_recursive (notmuch, path, &st, state);
 
     /* Now stop the timer. */
-    timerval.it_interval.tv_sec = 0;
-    timerval.it_interval.tv_usec = 0;
-    timerval.it_value.tv_sec = 0;
-    timerval.it_value.tv_usec = 0;
-    setitimer (ITIMER_REAL, &timerval, NULL);
-
-    /* And disable the signal handler. */
-    action.sa_handler = SIG_IGN;
-    sigaction (SIGALRM, &action, NULL);
+    if (timer_is_active) {
+       timerval.it_interval.tv_sec = 0;
+       timerval.it_interval.tv_usec = 0;
+       timerval.it_value.tv_sec = 0;
+       timerval.it_value.tv_usec = 0;
+       setitimer (ITIMER_REAL, &timerval, NULL);
+
+       /* And disable the signal handler. */
+       action.sa_handler = SIG_IGN;
+       sigaction (SIGALRM, &action, NULL);
+    }
 
     return status;
 }
@@ -414,7 +423,7 @@ notmuch_new_command (void *ctx,
        add_files_state.total_files = count;
     } else {
        notmuch = notmuch_database_open (db_path,
-                                        NOTMUCH_DATABASE_MODE_READ_ONLY);
+                                        NOTMUCH_DATABASE_MODE_READ_WRITE);
        add_files_state.ignore_read_only_directories = TRUE;
        add_files_state.total_files = 0;
     }