Move read-only-archive hint from "notmuch setup" to "notmuch new"
authorCarl Worth <cworth@cworth.org>
Sun, 25 Oct 2009 16:14:16 +0000 (09:14 -0700)
committerCarl Worth <cworth@cworth.org>
Sun, 25 Oct 2009 16:14:16 +0000 (09:14 -0700)
The "notmuch setup" output was getting overwhelmingly verbose.

Also, some people might not have a lot of mail, so might never need
this optimization. It's much better to move the hint to the time
when the user could actually benefit from it, (it's easy to detect
that "notmuch new" took more than 1 second, and we know if there
are any read-only directories there or not).

notmuch.c

index 4ca8c1cc04f95a732cd3ff71ca481d6edc308a86..f16192fb6b5f2a1fea206fde94b202e7eb409aca 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -55,6 +55,7 @@ typedef struct command {
 
 typedef struct {
     int ignore_read_only_directories;
+    int saw_read_only_directory;
 
     int total_files;
     int processed_files;
@@ -169,6 +170,7 @@ add_files_recursive (notmuch_database_t *notmuch,
     if (state->ignore_read_only_directories &&
        (st->st_mode & S_IWUSR) == 0)
     {
+       state->saw_read_only_directory = TRUE;
        goto DONE;
     }
 
@@ -463,6 +465,7 @@ setup_command (int argc, char *argv[])
     printf ("Next, we'll inspect the messages and create a database of threads:\n");
 
     add_files_state.ignore_read_only_directories = FALSE;
+    add_files_state.saw_read_only_directory = FALSE;
     add_files_state.total_files = count;
     add_files_state.processed_files = 0;
     add_files_state.added_messages = 0;
@@ -493,10 +496,6 @@ setup_command (int argc, char *argv[])
     printf ("When new mail is delivered to %s in the future,\n"
            "run \"notmuch new\" to add it to the database.\n\n",
            mail_directory);
-    printf ("And if you have any sub-directories that are archives (that is,\n"
-           "they will never receive new mail), marking these directores as\n"
-           "read-only (chmod u-w /path/to/dir) will make \"notmuch new\"\n"
-           "much more efficient (it won't even look in those directories).\n\n");
 
     if (ret) {
        printf ("Note: At least one error was encountered: %s\n",
@@ -531,6 +530,7 @@ new_command (int argc, char *argv[])
     mail_directory = notmuch_database_get_path (notmuch);
 
     add_files_state.ignore_read_only_directories = TRUE;
+    add_files_state.saw_read_only_directory = FALSE;
     add_files_state.total_files = 0;
     add_files_state.processed_files = 0;
     add_files_state.added_messages = 0;
@@ -562,8 +562,15 @@ new_command (int argc, char *argv[])
        printf ("No new mail---and that's not much.\n");
     }
 
+    if (elapsed > 1 && ! add_files_state.saw_read_only_directory) {
+       printf ("\nTip: If you have any sub-directories that are archives (that is,\n"
+               "they will never receive new mail), marking these directores as\n"
+               "read-only (chmod u-w /path/to/dir) will make \"notmuch new\"\n"
+               "much more efficient (it won't even look in those directories).\n");
+    }
+
     if (ret) {
-       printf ("Note: At least one error was encountered: %s\n",
+       printf ("\nNote: At least one error was encountered: %s\n",
                notmuch_status_to_string (ret));
     }