]> git.notmuchmail.org Git - notmuch/blobdiff - lib/query.cc
lib: Eliminate some redundant includes of xapian.h
[notmuch] / lib / query.cc
index 10f8dc8a1a7aa0ade1ced3ff129e6cf1143d574f..7916421e4a0068847a0fc13b71514c1258893a42 100644 (file)
@@ -23,8 +23,6 @@
 
 #include <glib.h> /* GHashTable, GPtrArray */
 
-#include <xapian.h>
-
 struct _notmuch_query {
     notmuch_database_t *notmuch;
     const char *query_string;
@@ -70,12 +68,24 @@ notmuch_query_create (notmuch_database_t *notmuch,
     return query;
 }
 
+const char *
+notmuch_query_get_query_string (notmuch_query_t *query)
+{
+    return query->query_string;
+}
+
 void
 notmuch_query_set_sort (notmuch_query_t *query, notmuch_sort_t sort)
 {
     query->sort = sort;
 }
 
+notmuch_sort_t
+notmuch_query_get_sort (notmuch_query_t *query)
+{
+    return query->sort;
+}
+
 /* We end up having to call the destructors explicitly because we had
  * to use "placement new" in order to initialize C++ objects within a
  * block that we allocated with talloc. So C++ is making talloc
@@ -148,6 +158,8 @@ notmuch_query_search_messages (notmuch_query_t *query)
        case NOTMUCH_SORT_MESSAGE_ID:
            enquire.set_sort_by_value (NOTMUCH_VALUE_MESSAGE_ID, FALSE);
            break;
+        case NOTMUCH_SORT_UNSORTED:
+           break;
        }
 
 #if DEBUG_QUERY
@@ -161,14 +173,16 @@ notmuch_query_search_messages (notmuch_query_t *query)
        messages->iterator = mset.begin ();
        messages->iterator_end = mset.end ();
 
+       return &messages->base;
+
     } catch (const Xapian::Error &error) {
        fprintf (stderr, "A Xapian exception occurred performing query: %s\n",
                 error.get_msg().c_str());
        fprintf (stderr, "Query string was: %s\n", query->query_string);
        notmuch->exception_reported = TRUE;
+       talloc_free (messages);
+       return NULL;
     }
-
-    return &messages->base;
 }
 
 notmuch_bool_t
@@ -245,6 +259,10 @@ notmuch_query_search_threads (notmuch_query_t *query)
                                              free, NULL);
 
     threads->messages = notmuch_query_search_messages (query);
+    if (threads->messages == NULL) {
+           talloc_free (threads);
+           return NULL;
+    }
 
     threads->thread_id = NULL;
 
@@ -299,7 +317,8 @@ notmuch_threads_get (notmuch_threads_t *threads)
     return _notmuch_thread_create (threads->query,
                                   threads->query->notmuch,
                                   threads->thread_id,
-                                  threads->query->query_string);
+                                  threads->query->query_string,
+                                  threads->query->sort);
 }
 
 void