typedef struct {
int output_is_a_tty;
int verbose;
+ int debug;
const char **new_tags;
size_t new_tags_length;
const char **new_ignore;
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);
}
/* 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);
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. */
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;
}
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 */
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 {