notmuch-mutt: replace shell pipeline with internal pipe processing
[notmuch] / notmuch-reindex.c
index 44223042f46c1dc8536726f3c64d8448a2694f30..5a39ade103de2f0fd6160639d2e56fa873784acd 100644 (file)
@@ -13,7 +13,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see http://www.gnu.org/licenses/ .
+ * along with this program.  If not, see https://www.gnu.org/licenses/ .
  *
  * Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
  */
@@ -40,7 +40,7 @@ handle_sigint (unused (int sig))
  */
 static int
 reindex_query (notmuch_database_t *notmuch, const char *query_string,
-              notmuch_param_t *indexopts)
+              notmuch_indexopts_t *indexopts)
 {
     notmuch_query_t *query;
     notmuch_messages_t *messages;
@@ -68,12 +68,13 @@ reindex_query (notmuch_database_t *notmuch, const char *query_string,
         notmuch_messages_move_to_next (messages)) {
        message = notmuch_messages_get (messages);
 
-       ret = notmuch_message_reindex(message, indexopts);
+       ret = notmuch_message_reindex (message, indexopts);
        if (ret != NOTMUCH_STATUS_SUCCESS)
            break;
+       notmuch_message_destroy (message);
     }
 
-    if (!ret)
+    if (! ret)
        ret = notmuch_database_end_atomic (notmuch);
 
     notmuch_query_destroy (query);
@@ -89,7 +90,7 @@ notmuch_reindex_command (notmuch_config_t *config, int argc, char *argv[])
     struct sigaction action;
     int opt_index;
     int ret;
-    notmuch_param_t *indexopts = NULL;
+    notmuch_status_t status;
 
     /* Set up our handler for SIGINT */
     memset (&action, 0, sizeof (struct sigaction));
@@ -99,8 +100,9 @@ notmuch_reindex_command (notmuch_config_t *config, int argc, char *argv[])
     sigaction (SIGINT, &action, NULL);
 
     notmuch_opt_desc_t options[] = {
-       { NOTMUCH_OPT_INHERIT, (void *) &notmuch_shared_options, NULL, 0, 0 },
-       { 0, 0, 0, 0, 0 }
+       { .opt_inherit = notmuch_shared_indexing_options },
+       { .opt_inherit = notmuch_shared_options },
+       { }
     };
 
     opt_index = parse_arguments (argc, argv, options, 1);
@@ -115,7 +117,14 @@ notmuch_reindex_command (notmuch_config_t *config, int argc, char *argv[])
 
     notmuch_exit_if_unmatched_db_uuid (notmuch);
 
-    query_string = query_string_from_args (config, argc-opt_index, argv+opt_index);
+    status = notmuch_process_shared_indexing_options (notmuch);
+    if (status != NOTMUCH_STATUS_SUCCESS) {
+       fprintf (stderr, "Error: Failed to process index options. (%s)\n",
+                notmuch_status_to_string (status));
+       return EXIT_FAILURE;
+    }
+
+    query_string = query_string_from_args (config, argc - opt_index, argv + opt_index);
     if (query_string == NULL) {
        fprintf (stderr, "Out of memory\n");
        return EXIT_FAILURE;
@@ -125,8 +134,8 @@ notmuch_reindex_command (notmuch_config_t *config, int argc, char *argv[])
        fprintf (stderr, "Error: notmuch reindex requires at least one search term.\n");
        return EXIT_FAILURE;
     }
-    
-    ret = reindex_query (notmuch, query_string, indexopts);
+
+    ret = reindex_query (notmuch, query_string, indexing_cli_choices.opts);
 
     notmuch_database_destroy (notmuch);