X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fquery.cc;h=60ff8bd9a39e1707e12a4e96cff99890b00d669b;hp=7381a545eda132150461f467d0b6055fb7caa8e8;hb=29f125212619ebca8621dd2106b412b22e1b6d22;hpb=16aa65ba2575fd504c31d9671d8c5150f8e8adf1 diff --git a/lib/query.cc b/lib/query.cc index 7381a545..60ff8bd9 100644 --- a/lib/query.cc +++ b/lib/query.cc @@ -28,7 +28,7 @@ struct _notmuch_query { const char *query_string; notmuch_sort_t sort; notmuch_string_list_t *exclude_terms; - notmuch_bool_t omit_excluded; + notmuch_exclude_t omit_excluded; }; typedef struct _notmuch_mset_messages { @@ -80,7 +80,7 @@ notmuch_query_create (notmuch_database_t *notmuch, if (_debug_query ()) fprintf (stderr, "Query string is:\n%s\n", query_string); - query = talloc (NULL, notmuch_query_t); + query = talloc (notmuch, notmuch_query_t); if (unlikely (query == NULL)) return NULL; @@ -92,7 +92,7 @@ notmuch_query_create (notmuch_database_t *notmuch, query->exclude_terms = _notmuch_string_list_create (query); - query->omit_excluded = TRUE; + query->omit_excluded = NOTMUCH_EXCLUDE_TRUE; return query; } @@ -104,7 +104,8 @@ notmuch_query_get_query_string (notmuch_query_t *query) } void -notmuch_query_set_omit_excluded (notmuch_query_t *query, notmuch_bool_t omit_excluded) +notmuch_query_set_omit_excluded (notmuch_query_t *query, + notmuch_exclude_t omit_excluded) { query->omit_excluded = omit_excluded; } @@ -217,13 +218,15 @@ notmuch_query_search_messages (notmuch_query_t *query) } messages->base.excluded_doc_ids = NULL; - if (query->exclude_terms) { + if ((query->omit_excluded != NOTMUCH_EXCLUDE_FALSE) && (query->exclude_terms)) { exclude_query = _notmuch_exclude_tags (query, final_query); - if (query->omit_excluded) + if (query->omit_excluded == NOTMUCH_EXCLUDE_TRUE || + query->omit_excluded == NOTMUCH_EXCLUDE_ALL) + { final_query = Xapian::Query (Xapian::Query::OP_AND_NOT, final_query, exclude_query); - else { + } else { /* NOTMUCH_EXCLUDE_FLAG */ exclude_query = Xapian::Query (Xapian::Query::OP_AND, exclude_query, final_query); @@ -459,6 +462,9 @@ notmuch_threads_valid (notmuch_threads_t *threads) { unsigned int doc_id; + if (! threads) + return FALSE; + while (threads->doc_id_pos < threads->doc_ids->len) { doc_id = g_array_index (threads->doc_ids, unsigned int, threads->doc_id_pos); @@ -486,6 +492,7 @@ notmuch_threads_get (notmuch_threads_t *threads) doc_id, &threads->match_set, threads->query->exclude_terms, + threads->query->omit_excluded, threads->query->sort); }