From 7a8d43dc5f0568125cd41ebb74edd7b712ce7133 Mon Sep 17 00:00:00 2001 From: djcb Date: Sat, 19 May 2018 22:22:41 +0300 Subject: [PATCH] only use OP_WILDCARD for xapian >= 1.3.3 It's not available for earlier versions. --- configure.ac | 5 ++++- lib/parser/xapian.cc | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 26421a31..85dc176c 100644 --- a/configure.ac +++ b/configure.ac @@ -159,7 +159,10 @@ AS_IF([test "x$XAPIAN_CONFIG" = "xno"],[ *** is in your PATH.])], [xapian_version=$($XAPIAN_CONFIG --version | sed -e 's/.* //')]) AS_CASE([$xapian_version], - [1.[[2-9]].[[0-9]]*], [], + [1.[[3-9]].[[3-9]]*], + [AC_DEFINE([XAPIAN_HAVE_OP_WILDCARD],[1],[Xapian::Query::OP_WILDCARD?])], + [1.[[2-9]].[[0-9]]*], + [AC_MSG_WARN([*** xapian $xapian_version, no Query::Op::Wildcard])], [AC_MSG_ERROR([*** xapian version >= 1.2 needed, but version $xapian_version found.])]) diff --git a/lib/parser/xapian.cc b/lib/parser/xapian.cc index 08bdebe7..7184215a 100644 --- a/lib/parser/xapian.cc +++ b/lib/parser/xapian.cc @@ -17,6 +17,10 @@ ** 02110-1301, USA. */ +#ifdef HAVE_CONFIG_H +#include +#endif /*HAVE_CONFIG_H*/ + #include #include "parser/xapian.hh" @@ -52,12 +56,16 @@ xapian_query_op (const Mux::Tree& tree) static Xapian::Query maybe_wildcard (const Value* val, const std::string& str) { +#ifndef XAPIAN_HAVE_OP_WILDCARD + return Xapian::Query(val->prefix + str); +#else const auto vlen = str.length(); if (vlen <= 1 || str[vlen-1] != '*') return Xapian::Query(val->prefix + str); else return Xapian::Query(Xapian::Query::OP_WILDCARD, val->prefix + str.substr(0, vlen-1)); +#endif/*XAPIAN_HAVE_OP_WILDCARD*/ } static Xapian::Query