]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-new.c
test: initial performance testing infrastructure
[notmuch] / notmuch-new.c
index 2b05605031af81186bbe92c076bec014a54ee96a..56c4a6fdd62a3f25709de37730bd0864532bf5bb 100644 (file)
@@ -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;
@@ -281,9 +282,9 @@ _entry_in_ignore_list (const char *entry, add_files_state_t *state)
  *     if fs_mtime isn't the current wall-clock time.
  */
 static notmuch_status_t
-add_files_recursive (notmuch_database_t *notmuch,
-                    const char *path,
-                    add_files_state_t *state)
+add_files (notmuch_database_t *notmuch,
+          const char *path,
+          add_files_state_t *state)
 {
     DIR *dir = NULL;
     struct dirent *entry = NULL;
@@ -373,11 +374,15 @@ add_files_recursive (notmuch_database_t *notmuch,
            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) add_files_recursive, pass 1: explicitly ignoring %s/%s\n",
+                       path,
+                       entry->d_name);
            continue;
        }
 
        next = talloc_asprintf (notmuch, "%s/%s", path, entry->d_name);
-       status = add_files_recursive (notmuch, next, state);
+       status = add_files (notmuch, next, state);
        if (status) {
            ret = status;
            goto DONE;
@@ -414,8 +419,13 @@ add_files_recursive (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. */
@@ -647,16 +657,6 @@ stop_progress_printing_timer (void)
 }
 
 
-/* This is the top-level entry point for add_files. It does a couple
- * of error checks and then calls into the recursive function. */
-static notmuch_status_t
-add_files (notmuch_database_t *notmuch,
-          const char *path,
-          add_files_state_t *state)
-{
-    return add_files_recursive (notmuch, path, state);
-}
-
 /* XXX: This should be merged with the add_files function since it
  * shares a lot of logic with it. */
 /* Recursively count all regular files in path and all sub-directories
@@ -694,6 +694,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;
        }
 
@@ -850,6 +854,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 */
@@ -857,6 +862,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 {