]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-new.c
bindings: drop build time message on missing ruby dependency
[notmuch] / notmuch-new.c
index 8ff1ade70e49565b0c456272e51133e2e7c9bf17..04cb5cac092a9cf08def0af2645f89a5d0394c5f 100644 (file)
@@ -281,6 +281,10 @@ add_file (notmuch_database_t *notmuch, const char *filename,
        fprintf (stderr, "Note: Ignoring non-mail file: %s\n", filename);
        break;
     /* Fatal issues. Don't process anymore. */
+    case NOTMUCH_STATUS_FILE_ERROR:
+       fprintf (stderr, "Unexpected error with file %s\n", filename);
+       (void) print_status_database ("add_file", notmuch, status);
+       goto DONE;
     case NOTMUCH_STATUS_READ_ONLY_DATABASE:
     case NOTMUCH_STATUS_XAPIAN_EXCEPTION:
     case NOTMUCH_STATUS_OUT_OF_MEMORY:
@@ -445,7 +449,7 @@ add_files (notmuch_database_t *notmuch,
         */
        if (_entry_in_ignore_list (entry->d_name, state)) {
            if (state->debug)
-               printf ("(D) add_files_recursive, pass 1: explicitly ignoring %s/%s\n",
+               printf ("(D) add_files, pass 1: explicitly ignoring %s/%s\n",
                        path, entry->d_name);
            continue;
        }
@@ -513,9 +517,8 @@ add_files (notmuch_database_t *notmuch,
        /* Ignore files & directories user has configured to be ignored */
        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);
+               printf ("(D) add_files, pass 2: explicitly ignoring %s/%s\n",
+                       path, entry->d_name);
            continue;
        }
 
@@ -528,6 +531,10 @@ add_files (notmuch_database_t *notmuch,
                                              "%s/%s", path,
                                              notmuch_filenames_get (db_files));
 
+           if (state->debug)
+               printf ("(D) add_files, pass 2: queuing passed file %s for deletion from database\n",
+                       absolute);
+
            _filename_list_add (state->removed_files, absolute);
 
            notmuch_filenames_move_to_next (db_files);
@@ -542,6 +549,9 @@ add_files (notmuch_database_t *notmuch,
            {
                char *absolute = talloc_asprintf (state->removed_directories,
                                                  "%s/%s", path, filename);
+               if (state->debug)
+                   printf ("(D) add_files, pass 2: queuing passed directory %s for deletion from database\n",
+                       absolute);
 
                _filename_list_add (state->removed_directories, absolute);
            }
@@ -610,6 +620,9 @@ add_files (notmuch_database_t *notmuch,
        char *absolute = talloc_asprintf (state->removed_files,
                                          "%s/%s", path,
                                          notmuch_filenames_get (db_files));
+       if (state->debug)
+           printf ("(D) add_files, pass 3: queuing leftover file %s for deletion from database\n",
+                   absolute);
 
        _filename_list_add (state->removed_files, absolute);
 
@@ -622,6 +635,10 @@ add_files (notmuch_database_t *notmuch,
                                          "%s/%s", path,
                                          notmuch_filenames_get (db_subdirs));
 
+       if (state->debug)
+           printf ("(D) add_files, pass 3: queuing leftover directory %s for deletion from database\n",
+                   absolute);
+
        _filename_list_add (state->removed_directories, absolute);
 
        notmuch_filenames_move_to_next (db_subdirs);
@@ -864,8 +881,11 @@ _remove_directory (void *ctx,
            goto DONE;
     }
 
+    status = notmuch_directory_delete (directory);
+
   DONE:
-    notmuch_directory_destroy (directory);
+    if (status)
+       notmuch_directory_destroy (directory);
     return status;
 }
 
@@ -910,7 +930,11 @@ int
 notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
 {
     notmuch_database_t *notmuch;
-    add_files_state_t add_files_state;
+    add_files_state_t add_files_state = {
+       .verbosity = VERBOSITY_NORMAL,
+       .debug = FALSE,
+       .output_is_a_tty = isatty (fileno (stdout)),
+    };
     struct timeval tv_start;
     int ret = 0;
     struct stat st;
@@ -925,10 +949,6 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
     notmuch_bool_t quiet = FALSE, verbose = FALSE;
     notmuch_status_t status;
 
-    add_files_state.verbosity = VERBOSITY_NORMAL;
-    add_files_state.debug = FALSE;
-    add_files_state.output_is_a_tty = isatty (fileno (stdout));
-
     notmuch_opt_desc_t options[] = {
        { NOTMUCH_OPT_BOOLEAN,  &quiet, "quiet", 'q', 0 },
        { NOTMUCH_OPT_BOOLEAN,  &verbose, "verbose", 'v', 0 },
@@ -995,10 +1015,11 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
                fputs (status_string, stderr);
                free (status_string);
            }
-
            return EXIT_FAILURE;
        }
 
+       notmuch_exit_if_unmatched_db_uuid (notmuch);
+
        if (notmuch_database_needs_upgrade (notmuch)) {
            time_t now = time (NULL);
            struct tm *gm_time = gmtime (&now);
@@ -1062,9 +1083,6 @@ notmuch_new_command (notmuch_config_t *config, int argc, char *argv[])
     talloc_free (dot_notmuch_path);
     dot_notmuch_path = NULL;
 
-    add_files_state.processed_files = 0;
-    add_files_state.added_messages = 0;
-    add_files_state.removed_messages = add_files_state.renamed_messages = 0;
     gettimeofday (&add_files_state.tv_start, NULL);
 
     add_files_state.removed_files = _filename_list_create (config);