X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-new.c;h=718a5387c81c235e7f70c14c5a5fa3b01963e17e;hp=938ae296914bc8f5d7e7120df35c7f3ade0350a5;hb=a4eabfd1b7b6c72af09153df082bac3dca7c4420;hpb=4ca36441a84155571ca2e572f3f6a96af55685b1 diff --git a/notmuch-new.c b/notmuch-new.c index 938ae296..718a5387 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -37,6 +37,7 @@ typedef struct _filename_list { typedef struct { int output_is_a_tty; int verbose; + int debug; const char **new_tags; size_t new_tags_length; const char **new_ignore; @@ -349,6 +350,18 @@ add_files (notmuch_database_t *notmuch, entry = fs_entries[i]; + /* Ignore any files/directories the user has configured to + * ignore. We do this before dirent_type both for performance + * and because we don't care if dirent_type fails on entries + * that are explicitly ignored. + */ + if (_entry_in_ignore_list (entry->d_name, state)) { + if (state->debug) + printf ("(D) add_files_recursive, pass 1: explicitly ignoring %s/%s\n", + path, entry->d_name); + continue; + } + /* We only want to descend into directories (and symlinks to * directories). */ entry_type = dirent_type (path, entry); @@ -363,18 +376,14 @@ add_files (notmuch_database_t *notmuch, } /* Ignore special directories to avoid infinite recursion. - * Also ignore the .notmuch directory, any "tmp" directory - * that appears within a maildir and files/directories - * the user has configured to be ignored. + * Also ignore the .notmuch directory and any "tmp" directory + * that appears within a maildir. */ if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0 || (is_maildir && strcmp (entry->d_name, "tmp") == 0) || - strcmp (entry->d_name, ".notmuch") == 0 || - _entry_in_ignore_list (entry->d_name, state)) - { + strcmp (entry->d_name, ".notmuch") == 0) continue; - } next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name); status = add_files (notmuch, next, state); @@ -414,8 +423,13 @@ add_files (notmuch_database_t *notmuch, entry = fs_entries[i]; /* Ignore files & directories user has configured to be ignored */ - if (_entry_in_ignore_list (entry->d_name, state)) + if (_entry_in_ignore_list (entry->d_name, state)) { + if (state->debug) + printf ("(D) add_files_recursive, pass 2: explicitly ignoring %s/%s\n", + path, + entry->d_name); continue; + } /* Check if we've walked past any names in db_files or * db_subdirs. If so, these have been deleted. */ @@ -684,6 +698,10 @@ count_files (const char *path, int *count, add_files_state_t *state) strcmp (entry->d_name, ".notmuch") == 0 || _entry_in_ignore_list (entry->d_name, state)) { + if (_entry_in_ignore_list (entry->d_name, state) && state->debug) + printf ("(D) count_files: explicitly ignoring %s/%s\n", + path, + entry->d_name); continue; } @@ -840,6 +858,7 @@ notmuch_new_command (void *ctx, int argc, char *argv[]) notmuch_bool_t run_hooks = TRUE; add_files_state.verbose = 0; + add_files_state.debug = 0; add_files_state.output_is_a_tty = isatty (fileno (stdout)); argc--; argv++; /* skip subcommand argument */ @@ -847,6 +866,8 @@ notmuch_new_command (void *ctx, int argc, char *argv[]) for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (STRNCMP_LITERAL (argv[i], "--verbose") == 0) { add_files_state.verbose = 1; + } else if (strcmp (argv[i], "--debug") == 0) { + add_files_state.debug = 1; } else if (strcmp (argv[i], "--no-hooks") == 0) { run_hooks = FALSE; } else {