fix build without sfsexp

a1d139de ("lib: add sexp: prefix to Xapian (infix) query parser.",
2022-04-09) introduced sfsexp infix queries. This requires the infix
preprocessor to be built in in a way which does not require sfsexp when
notmuch is built without it.

Make the preprocessor throw a Xapian error in this case (and fix the
build).

Signed-off-by: Michael J Gruber <git@grubix.eu>
This commit is contained in:
Michael J Gruber 2022-04-15 18:23:46 +02:00 committed by David Bremner
parent 78aaef9a0b
commit 785f9d656d
3 changed files with 6 additions and 4 deletions

View file

@ -354,10 +354,6 @@ _notmuch_query_string_to_xapian_query (notmuch_database_t *notmuch,
std::string query_string, std::string query_string,
Xapian::Query &output, Xapian::Query &output,
std::string &msg); std::string &msg);
/* parse-sexp.cc */
notmuch_status_t
_notmuch_sexp_string_to_xapian_query (notmuch_database_t *notmuch, const char *querystr,
Xapian::Query &output);
notmuch_status_t notmuch_status_t
_notmuch_query_expand (notmuch_database_t *notmuch, const char *field, Xapian::Query subquery, _notmuch_query_expand (notmuch_database_t *notmuch, const char *field, Xapian::Query subquery,

View file

@ -227,6 +227,7 @@ _notmuch_query_ensure_parsed_xapian (notmuch_query_t *query)
return NOTMUCH_STATUS_SUCCESS; return NOTMUCH_STATUS_SUCCESS;
} }
#if HAVE_SFSEXP
static notmuch_status_t static notmuch_status_t
_notmuch_query_ensure_parsed_sexpr (notmuch_query_t *query) _notmuch_query_ensure_parsed_sexpr (notmuch_query_t *query)
{ {
@ -243,6 +244,7 @@ _notmuch_query_ensure_parsed_sexpr (notmuch_query_t *query)
_notmuch_query_cache_terms (query); _notmuch_query_cache_terms (query);
return NOTMUCH_STATUS_SUCCESS; return NOTMUCH_STATUS_SUCCESS;
} }
#endif
static notmuch_status_t static notmuch_status_t
_notmuch_query_ensure_parsed (notmuch_query_t *query) _notmuch_query_ensure_parsed (notmuch_query_t *query)

View file

@ -30,10 +30,14 @@ SexpFieldProcessor::operator() (const std::string & query_string)
notmuch_status_t status; notmuch_status_t status;
Xapian::Query output; Xapian::Query output;
#if HAVE_SFSEXP
status = _notmuch_sexp_string_to_xapian_query (notmuch, query_string.c_str (), output); status = _notmuch_sexp_string_to_xapian_query (notmuch, query_string.c_str (), output);
if (status) { if (status) {
throw Xapian::QueryParserError ("error parsing " + query_string); throw Xapian::QueryParserError ("error parsing " + query_string);
} }
#else
throw Xapian::QueryParserError ("sexp query parser not available");
#endif
return output; return output;