diff --git a/.hgtags b/.hgtags index 8488d400..15278583 100644 --- a/.hgtags +++ b/.hgtags @@ -126,3 +126,4 @@ e44205c256063d6388682c1dfc62b4db6184db0d help 0000000000000000000000000000000000000000 RECOLL_1_19_0 0000000000000000000000000000000000000000 RECOLL_1_19_0 3207b030989d19bdec25fdd2b500c3bbec3ebe97 RECOLL_1_19_0 +599179076d53eb87604c97e0adf391e304bcf377 RECOLL_1_19_1 diff --git a/src/VERSION b/src/VERSION index 815d5ca0..66e2ae6c 100644 --- a/src/VERSION +++ b/src/VERSION @@ -1 +1 @@ -1.19.0 +1.19.1 diff --git a/src/kde/kioslave/kio_recoll/CMakeLists.txt b/src/kde/kioslave/kio_recoll/CMakeLists.txt index 3cb978ce..e28d7277 100644 --- a/src/kde/kioslave/kio_recoll/CMakeLists.txt +++ b/src/kde/kioslave/kio_recoll/CMakeLists.txt @@ -46,15 +46,21 @@ IF(PTHREAD_IN_LIBPTHREAD) LIST(APPEND EXTRA_LIBS pthread) ENDIF(PTHREAD_IN_LIBPTHREAD) +# Had the idea to add e.g. /usr/lib/recoll to the rpath so that the dyn lib +# will be found at run time. But this does not seem to work with debian +# which strips RPATH by default (I think there is a way for libs in app-specific +# paths but I did not find it. Link with the .a instead. +#SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib/recoll") + kde4_add_plugin(kio_recoll ${kio_recoll_SRCS}) add_custom_target(rcllib - COMMAND make + COMMAND make librecoll.a WORKING_DIRECTORY ${rcltop}/lib ) add_dependencies(kio_recoll rcllib) -target_link_libraries(kio_recoll recoll ${EXTRA_LIBS} ${KDE4_KIO_LIBS}) +target_link_libraries(kio_recoll recoll xapian z ${EXTRA_LIBS} ${KDE4_KIO_LIBS}) install(TARGETS kio_recoll DESTINATION ${PLUGIN_INSTALL_DIR}) diff --git a/src/rcldb/searchdata.h b/src/rcldb/searchdata.h index 4c10f3d0..f9d3154b 100644 --- a/src/rcldb/searchdata.h +++ b/src/rcldb/searchdata.h @@ -315,6 +315,12 @@ public: m_haveWildCards = (txt.find_first_of(cstr_minwilds) != std::string::npos); } + SearchDataClauseSimple(const std::string& txt, SClType tp) + : SearchDataClause(tp), m_text(txt), m_curcl(0) + { + m_haveWildCards = + (txt.find_first_of(cstr_minwilds) != std::string::npos); + } virtual ~SearchDataClauseSimple() { @@ -365,10 +371,10 @@ protected: * field, especially for file names, because this makes searches for * "*xx" much faster (no need to scan the whole main index). */ -class SearchDataClauseFilename : public SearchDataClause { +class SearchDataClauseFilename : public SearchDataClauseSimple { public: SearchDataClauseFilename(const std::string& txt) - : SearchDataClause(SCLT_FILENAME), m_text(txt) + : SearchDataClauseSimple(txt, SCLT_FILENAME) { // File name searches don't count when looking for wild cards. m_haveWildCards = false; @@ -383,9 +389,6 @@ public: } virtual bool toNativeQuery(Rcl::Db &, void *); - -protected: - std::string m_text; }; diff --git a/src/rcldb/searchdataxml.cpp b/src/rcldb/searchdataxml.cpp index f2d90641..72b3b9e5 100644 --- a/src/rcldb/searchdataxml.cpp +++ b/src/rcldb/searchdataxml.cpp @@ -56,18 +56,20 @@ string SearchData::asXML() // Clause list os << "" << endl; + + // List conjunction: default is AND, else print it. if (m_tp != SCLT_AND) os << "" << tpToString(m_tp) << "" << endl; + for (unsigned int i = 0; i < m_query.size(); i++) { SearchDataClause *c = m_query[i]; if (c->getTp() == SCLT_SUB) { LOGERR(("SearchData::asXML: can't do subclauses !\n")); continue; } - if (c->getexclude()) - os << "" << endl; if (c->getTp() == SCLT_PATH) { - // Keep these apart, for compat with the older history format + // Keep these apart, for compat with the older history format. NEG + // is ignored here, we have 2 different tags instead. SearchDataClausePath *cl = dynamic_cast(c); if (cl->getexclude()) { @@ -76,24 +78,36 @@ string SearchData::asXML() os << "" << base64_encode(cl->gettext()) << "" << endl; } continue; - } + } else { - SearchDataClauseSimple *cl = - dynamic_cast(c); - os << "" << endl; - if (cl->getTp() != SCLT_AND) { - os << "" << tpToString(cl->getTp()) << "" << endl; + os << "" << endl; + + if (c->getexclude()) + os << "" << endl; + + if (c->getTp() != SCLT_AND) { + os << "" << tpToString(c->getTp()) << "" << endl; + } + if (c->getTp() == SCLT_FILENAME) { + SearchDataClauseFilename *cl = + dynamic_cast(c); + os << "" << base64_encode(cl->gettext()) << "" << endl; + } else { + SearchDataClauseSimple *cl = + dynamic_cast(c); + if (!cl->getfield().empty()) { + os << "" << base64_encode(cl->getfield()) << "" << + endl; + } + os << "" << base64_encode(cl->gettext()) << "" << endl; + if (cl->getTp() == SCLT_NEAR || cl->getTp() == SCLT_PHRASE) { + SearchDataClauseDist *cld = + dynamic_cast(cl); + os << "" << cld->getslack() << "" << endl; + } + } + os << "" << endl; } - if (cl->getTp() != SCLT_FILENAME && !cl->getfield().empty()) { - os << "" << base64_encode(cl->getfield()) << "" << endl; - } - os << "" << base64_encode(cl->gettext()) << "" << endl; - if (cl->getTp() == SCLT_NEAR || cl->getTp() == SCLT_PHRASE) { - SearchDataClauseDist *cld = - dynamic_cast(cl); - os << "" << cld->getslack() << "" << endl; - } - os << "" << endl; } os << "" << endl; diff --git a/website/BUGS.html b/website/BUGS.html index 14bd7e40..540e977e 100644 --- a/website/BUGS.html +++ b/website/BUGS.html @@ -29,7 +29,7 @@ later versions. Bugs listed in the topmost section may also exist in older versions.

-

recoll 1.19.0

+

recoll 1.19.1

+

recoll 1.19.0

+ +

recoll 1.18.2