]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch.c
tags: Re-implement tags iterator to avoid having C++ in the interface
[notmuch] / notmuch.c
index fbd773d710fdc74e9549af70532f0537c311e8d1..cc53d1d61644699a003cdcac71281eff1cc0cb60 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -608,9 +608,8 @@ search_command (int argc, char *argv[])
     void *local = talloc_new (NULL);
     notmuch_database_t *notmuch = NULL;
     notmuch_query_t *query;
-    notmuch_results_t *results;
-    notmuch_message_t *message;
-    notmuch_tags_t *tags;
+    notmuch_thread_results_t *results;
+    notmuch_thread_t *thread;
     char *query_str;
     int i;
     notmuch_status_t ret = NOTMUCH_STATUS_SUCCESS;
@@ -638,30 +637,15 @@ search_command (int argc, char *argv[])
        goto DONE;
     }
 
-    for (results = notmuch_query_search (query);
-        notmuch_results_has_more (results);
-        notmuch_results_advance (results))
+    for (results = notmuch_query_search_threads (query);
+        notmuch_thread_results_has_more (results);
+        notmuch_thread_results_advance (results))
     {
-       int first = 1;
-       message = notmuch_results_get (results);
-
-       printf ("%s (", notmuch_message_get_message_id (message));
-
-       for (tags = notmuch_message_get_tags (message);
-            notmuch_tags_has_more (tags);
-            notmuch_tags_advance (tags))
-       {
-           if (! first)
-               printf (" ");
-
-           printf ("%s", notmuch_tags_get (tags));
-
-           first = 0;
-       }
+       thread = notmuch_thread_results_get (results);
 
-       printf (")\n");
+       printf ("%s\n", notmuch_thread_get_thread_id (thread));
 
-       notmuch_message_destroy (message);
+       notmuch_thread_destroy (thread);
     }
 
     notmuch_query_destroy (query);
@@ -684,10 +668,10 @@ show_command (unused (int argc), unused (char *argv[]))
 static int
 dump_command (int argc, char *argv[])
 {
-    FILE *output;
+    FILE *output = NULL;
     notmuch_database_t *notmuch = NULL;
     notmuch_query_t *query;
-    notmuch_results_t *results;
+    notmuch_message_results_t *results;
     notmuch_message_t *message;
     notmuch_tags_t *tags;
     int ret = 0;
@@ -719,12 +703,12 @@ dump_command (int argc, char *argv[])
 
     notmuch_query_set_sort (query, NOTMUCH_SORT_MESSAGE_ID);
 
-    for (results = notmuch_query_search (query);
-        notmuch_results_has_more (results);
-        notmuch_results_advance (results))
+    for (results = notmuch_query_search_messages (query);
+        notmuch_message_results_has_more (results);
+        notmuch_message_results_advance (results))
     {
        int first = 1;
-       message = notmuch_results_get (results);
+       message = notmuch_message_results_get (results);
 
        fprintf (output,
                 "%s (", notmuch_message_get_message_id (message));
@@ -751,7 +735,7 @@ dump_command (int argc, char *argv[])
   DONE:
     if (notmuch)
        notmuch_database_close (notmuch);
-    if (output != stdout)
+    if (output && output != stdout)
        fclose (output);
 
     return ret;
@@ -760,7 +744,7 @@ dump_command (int argc, char *argv[])
 static int
 restore_command (int argc, char *argv[])
 {
-    FILE *input;
+    FILE *input = NULL;
     notmuch_database_t *notmuch = NULL;
     char *line = NULL;
     size_t line_size;
@@ -861,6 +845,8 @@ restore_command (int argc, char *argv[])
        free (line);
     if (notmuch)
        notmuch_database_close (notmuch);
+    if (input && input != stdin)
+       fclose (input);
 
     return ret;
 }
@@ -938,11 +924,11 @@ main (int argc, char *argv[])
        strcmp (argv[1], "--help") == 0)
     {
        fprintf (stderr, "The notmuch mail system.\n\n");
+       usage ();
+       return 0;
     } else {
        fprintf (stderr, "Error: Unknown command '%s'\n\n", argv[1]);
+       usage ();
+       return 1;
     }
-    usage ();
-    exit (1);
-
-    return 0;
 }