diff --git a/lib/Makefile.local b/lib/Makefile.local index 5dc057c0..8aa03891 100644 --- a/lib/Makefile.local +++ b/lib/Makefile.local @@ -58,8 +58,7 @@ libnotmuch_cxx_srcs = \ $(dir)/query-fp.cc \ $(dir)/config.cc \ $(dir)/regexp-fields.cc \ - $(dir)/thread.cc \ - $(dir)/thread-fp.cc + $(dir)/thread.cc libnotmuch_modules := $(libnotmuch_c_srcs:.c=.o) $(libnotmuch_cxx_srcs:.cc=.o) diff --git a/lib/database.cc b/lib/database.cc index 9cf8062c..02444e09 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -21,7 +21,6 @@ #include "database-private.h" #include "parse-time-vrp.h" #include "query-fp.h" -#include "thread-fp.h" #include "regexp-fields.h" #include "string-util.h" @@ -259,8 +258,7 @@ prefix_t prefix_table[] = { { "directory", "XDIRECTORY", NOTMUCH_FIELD_NO_FLAGS }, { "file-direntry", "XFDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, { "directory-direntry", "XDDIRENTRY", NOTMUCH_FIELD_NO_FLAGS }, - { "thread", "G", NOTMUCH_FIELD_EXTERNAL | - NOTMUCH_FIELD_PROCESSOR }, + { "thread", "G", NOTMUCH_FIELD_EXTERNAL }, { "tag", "K", NOTMUCH_FIELD_EXTERNAL | NOTMUCH_FIELD_PROCESSOR }, { "is", "K", NOTMUCH_FIELD_EXTERNAL | @@ -319,8 +317,6 @@ _setup_query_field (const prefix_t *prefix, notmuch_database_t *notmuch) fp = (new DateFieldProcessor())->release (); else if (STRNCMP_LITERAL(prefix->name, "query") == 0) fp = (new QueryFieldProcessor (*notmuch->query_parser, notmuch))->release (); - else if (STRNCMP_LITERAL(prefix->name, "thread") == 0) - fp = (new ThreadFieldProcessor (*notmuch->query_parser, notmuch))->release (); else fp = (new RegexpFieldProcessor (prefix->name, prefix->flags, *notmuch->query_parser, notmuch))->release (); diff --git a/lib/thread-fp.cc b/lib/thread-fp.cc deleted file mode 100644 index 1ab2ae35..00000000 --- a/lib/thread-fp.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* thread-fp.cc - "thread:" field processor glue - * - * This file is part of notmuch. - * - * Copyright © 2017 David Bremner - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * 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 https://www.gnu.org/licenses/ . - * - * Author: David Bremner - */ - -#include "database-private.h" -#include "thread-fp.h" -#include - -#if HAVE_XAPIAN_FIELD_PROCESSOR - -Xapian::Query -ThreadFieldProcessor::operator() (const std::string & str) -{ - notmuch_status_t status; - - if (str.at (0) == '{') { - if (str.length() > 1 && str.at (str.size () - 1) == '}'){ - std::string subquery_str = str.substr(1,str.size () - 2); - notmuch_query_t *subquery = notmuch_query_create (notmuch, subquery_str.c_str()); - notmuch_messages_t *messages; - std::set terms; - - if (!subquery) - throw Xapian::QueryParserError ("failed to create subquery for '" + subquery_str + "'"); - - - status = notmuch_query_search_messages (subquery, &messages); - if (status) - throw Xapian::QueryParserError ("failed to search messages for '" + subquery_str + "'"); - - - for (; notmuch_messages_valid (messages); notmuch_messages_move_to_next (messages)) { - std::string term = "G"; - notmuch_message_t *message; - message = notmuch_messages_get (messages); - term += notmuch_message_get_thread_id (message); - terms.insert (term); - } - return Xapian::Query (Xapian::Query::OP_OR, terms.begin(), terms.end()); - } else { - throw Xapian::QueryParserError ("missing } in '" + str + "'"); - } - } else { - /* literal thread id */ - std::string term = "G"+str; - return Xapian::Query (term); - } - -} -#endif diff --git a/lib/thread-fp.h b/lib/thread-fp.h deleted file mode 100644 index 13725978..00000000 --- a/lib/thread-fp.h +++ /dev/null @@ -1,42 +0,0 @@ -/* thread-fp.h - thread field processor glue - * - * This file is part of notmuch. - * - * Copyright © 2017 David Bremner - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * 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 https://www.gnu.org/licenses/ . - * - * Author: David Bremner - */ - -#ifndef NOTMUCH_THREAD_FP_H -#define NOTMUCH_THREAD_FP_H - -#include -#include "notmuch.h" - -#if HAVE_XAPIAN_FIELD_PROCESSOR -class ThreadFieldProcessor : public Xapian::FieldProcessor { - protected: - Xapian::QueryParser &parser; - notmuch_database_t *notmuch; - - public: - ThreadFieldProcessor (Xapian::QueryParser &parser_, notmuch_database_t *notmuch_) - : parser(parser_), notmuch(notmuch_) { }; - - Xapian::Query operator()(const std::string & str); -}; -#endif -#endif /* NOTMUCH_THREAD_FP_H */