kde kioslave: fix for new wasaToRcl shared_ptr interface. Misc warnings suppression
This commit is contained in:
parent
3c7e3ccbc7
commit
663da54c04
@ -297,7 +297,7 @@ void RecollProtocol::get(const KUrl& url)
|
||||
}
|
||||
|
||||
error(KIO::ERR_SLAVE_DEFINED, "Unrecognized URL or internal error");
|
||||
out:
|
||||
out:
|
||||
finished();
|
||||
}
|
||||
|
||||
@ -309,7 +309,7 @@ bool RecollProtocol::doSearch(const QueryDesc& qd)
|
||||
|
||||
char opt = qd.opt.isEmpty() ? 'l' : qd.opt.toUtf8().at(0);
|
||||
string qs = (const char *)qd.query.toUtf8();
|
||||
Rcl::SearchData *sd = 0;
|
||||
std::shared_ptr<Rcl::SearchData> sdata;
|
||||
if (opt != 'l') {
|
||||
Rcl::SearchDataClause *clp = 0;
|
||||
if (opt == 'f') {
|
||||
@ -318,19 +318,18 @@ bool RecollProtocol::doSearch(const QueryDesc& qd)
|
||||
clp = new Rcl::SearchDataClauseSimple(opt == 'o' ? Rcl::SCLT_OR :
|
||||
Rcl::SCLT_AND, qs);
|
||||
}
|
||||
sd = new Rcl::SearchData(Rcl::SCLT_OR, m_stemlang);
|
||||
if (sd && clp)
|
||||
sd->addClause(clp);
|
||||
sdata = std::make_shared<Rcl::SearchData>(Rcl::SCLT_OR, m_stemlang);
|
||||
if (sdata && clp)
|
||||
sdata->addClause(clp);
|
||||
} else {
|
||||
sd = wasaStringToRcl(o_rclconfig, m_stemlang, qs, m_reason);
|
||||
sdata = wasaStringToRcl(o_rclconfig, m_stemlang, qs, m_reason);
|
||||
}
|
||||
if (!sd) {
|
||||
if (!sdata) {
|
||||
m_reason = "Internal Error: cant build search";
|
||||
error(KIO::ERR_SLAVE_DEFINED, m_reason.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
std::shared_ptr<Rcl::SearchData> sdata(sd);
|
||||
std::shared_ptr<Rcl::Query>query(new Rcl::Query(m_rcldb.get()));
|
||||
query->setCollapseDuplicates(prefs.collapseDuplicates);
|
||||
if (!query->setQuery(sdata)) {
|
||||
|
||||
@ -34,7 +34,9 @@ Recoll configuration.
|
||||
|
||||
Recipe:
|
||||
|
||||
- Make sure the KF5 core and KIO devel packages and cmake are installed.
|
||||
- Make sure the KF5 core and KIO devel packages and cmake are
|
||||
installed. You probably need the kio-devel and extra-cmake-modules
|
||||
packages.
|
||||
|
||||
- Extract the Recoll source.
|
||||
|
||||
|
||||
@ -117,40 +117,40 @@ static const UDSEntry resultToUDSEntry(const Rcl::Doc& doc, int num)
|
||||
// asked to access it
|
||||
char cnum[30];
|
||||
sprintf(cnum, "%04d", num);
|
||||
entry.insert(KIO::UDSEntry::UDS_NAME, resultBaseName + cnum);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_NAME, resultBaseName + cnum);
|
||||
|
||||
// Display the real file name
|
||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, url.fileName());
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, url.fileName());
|
||||
|
||||
/// A local file path if the ioslave display files sitting on the
|
||||
/// local filesystem (but in another hierarchy, e.g. settings:/ or
|
||||
/// remote:/)
|
||||
entry.insert(KIO::UDSEntry::UDS_LOCAL_PATH, url.path());
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_LOCAL_PATH, url.path());
|
||||
|
||||
/// This file is a shortcut or mount, pointing to an
|
||||
/// URL in a different hierarchy
|
||||
/// @since 4.1
|
||||
// We should probably set this only if the scheme is not 'file' (e.g.
|
||||
// from the web cache).
|
||||
entry.insert(KIO::UDSEntry::UDS_TARGET_URL, doc.url.c_str());
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_TARGET_URL, doc.url.c_str());
|
||||
|
||||
if (!doc.mimetype.compare("application/x-fsdirectory") ||
|
||||
!doc.mimetype.compare("inode/directory")) {
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
} else {
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, doc.mimetype.c_str());
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, doc.mimetype.c_str());
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
}
|
||||
|
||||
// For local files, supply the usual file stat information
|
||||
struct stat info;
|
||||
if (lstat(url.path().toUtf8(), &info) >= 0) {
|
||||
entry.insert(KIO::UDSEntry::UDS_SIZE, info.st_size);
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, info.st_mode);
|
||||
entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, info.st_mtime);
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS_TIME, info.st_atime);
|
||||
entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, info.st_ctime);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_SIZE, info.st_size);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, info.st_mode);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, info.st_mtime);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, info.st_atime);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, info.st_ctime);
|
||||
}
|
||||
|
||||
return entry;
|
||||
@ -161,23 +161,23 @@ static const UDSEntry resultToUDSEntry(const Rcl::Doc& doc, int num)
|
||||
static void createRootEntry(KIO::UDSEntry& entry)
|
||||
{
|
||||
entry.clear();
|
||||
entry.insert(KIO::UDSEntry::UDS_NAME, ".");
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, 0700);
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_NAME, ".");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0700);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
}
|
||||
|
||||
// Points to html query screen
|
||||
static void createGoHomeEntry(KIO::UDSEntry& entry)
|
||||
{
|
||||
entry.clear();
|
||||
entry.insert(KIO::UDSEntry::UDS_NAME, "search.html");
|
||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, "Recoll search (click me)");
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
entry.insert(KIO::UDSEntry::UDS_TARGET_URL, "recoll:///search.html");
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, 0500);
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "text/html");
|
||||
entry.insert(KIO::UDSEntry::UDS_ICON_NAME, "recoll");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_NAME, "search.html");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, "Recoll search (click me)");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_TARGET_URL, "recoll:///search.html");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0500);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "text/html");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "recoll");
|
||||
}
|
||||
|
||||
// Points to help file
|
||||
@ -187,14 +187,14 @@ static void createGoHelpEntry(KIO::UDSEntry& entry)
|
||||
QStandardPaths::locate(QStandardPaths::GenericDataLocation,
|
||||
"kio_recoll/help.html");
|
||||
entry.clear();
|
||||
entry.insert(KIO::UDSEntry::UDS_NAME, "help");
|
||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, "Recoll help (click me first)");
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
entry.insert(KIO::UDSEntry::UDS_TARGET_URL, QString("file://") +
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_NAME, "help");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_DISPLAY_NAME, "Recoll help (click me first)");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_TARGET_URL, QString("file://") +
|
||||
location);
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, 0500);
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "text/html");
|
||||
entry.insert(KIO::UDSEntry::UDS_ICON_NAME, "help");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0500);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "text/html");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ICON_NAME, "help");
|
||||
}
|
||||
|
||||
// As far as I can see we only ever get this on '/' so why all the code?
|
||||
@ -205,8 +205,8 @@ void RecollProtocol::stat(const QUrl& url)
|
||||
UrlIngester ingest(this, url);
|
||||
|
||||
KIO::UDSEntry entry;
|
||||
// entry.insert(KIO::UDSEntry::UDS_TARGET_URL, url.url());
|
||||
// entry.insert(KIO::UDSEntry::UDS_URL, url.url());
|
||||
// entry.fastInsert(KIO::UDSEntry::UDS_TARGET_URL, url.url());
|
||||
// entry.fastInsert(KIO::UDSEntry::UDS_URL, url.url());
|
||||
UrlIngester::RootEntryType rettp;
|
||||
QueryDesc qd;
|
||||
int num;
|
||||
@ -257,12 +257,12 @@ void RecollProtocol::stat(const QUrl& url)
|
||||
if (m_alwaysdir || ingest.alwaysDir() || ingest.endSlashQuery()) {
|
||||
qDebug() << "RecollProtocol::stat: Directory type:";
|
||||
// Need to check no / in there
|
||||
entry.insert(KIO::UDSEntry::UDS_NAME, qd.query);
|
||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, 0700);
|
||||
entry.insert(KIO::UDSEntry::UDS_MODIFICATION_TIME, time(0));
|
||||
entry.insert(KIO::UDSEntry::UDS_CREATION_TIME, time(0));
|
||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_NAME, qd.query);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_ACCESS, 0700);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, time(0));
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, time(0));
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||
entry.fastInsert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||
}
|
||||
} else {
|
||||
qDebug() << "RecollProtocol::stat: none of the above ??";
|
||||
|
||||
@ -191,16 +191,16 @@ void RecollProtocol::queryDetails()
|
||||
QByteArray array;
|
||||
QTextStream os(&array, QIODevice::WriteOnly);
|
||||
|
||||
os << "<html><head>" << endl;
|
||||
os << "<html><head>" << "\n";
|
||||
os << "<meta http-equiv=\"Content-Type\" content=\"text/html;"
|
||||
"charset=utf-8\">" << endl;
|
||||
os << "<title>" << "Recoll query details" << "</title>\n" << endl;
|
||||
os << "</head>" << endl;
|
||||
os << "<body><h3>Query details:</h3>" << endl;
|
||||
os << "<p>" << m_pager.queryDescription().c_str() << "</p>" << endl;
|
||||
"charset=utf-8\">" << "\n";
|
||||
os << "<title>" << "Recoll query details" << "</title>\n" << "\n";
|
||||
os << "</head>" << "\n";
|
||||
os << "<body><h3>Query details:</h3>" << "\n";
|
||||
os << "<p>" << m_pager.queryDescription().c_str() << "</p>" << "\n";
|
||||
os << "<p><a href=\"" << makeQueryUrl(m_pager.pageNumber()).c_str() <<
|
||||
"\">Return to results</a>" << endl;
|
||||
os << "</body></html>" << endl;
|
||||
"\">Return to results</a>" << "\n";
|
||||
os << "</body></html>" << "\n";
|
||||
data(array);
|
||||
}
|
||||
|
||||
@ -210,7 +210,7 @@ public:
|
||||
: m_name(nm) {
|
||||
}
|
||||
|
||||
virtual string header() {
|
||||
virtual string header() override {
|
||||
if (m_inputhtml) {
|
||||
return cstr_null;
|
||||
} else {
|
||||
@ -222,11 +222,11 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual string startMatch(unsigned int) {
|
||||
virtual string startMatch(unsigned int) override {
|
||||
return string("<font color=\"blue\">");
|
||||
}
|
||||
|
||||
virtual string endMatch() {
|
||||
virtual string endMatch() override {
|
||||
return string("</font>");
|
||||
}
|
||||
|
||||
@ -266,14 +266,14 @@ void RecollProtocol::showPreview(const Rcl::Doc& idoc)
|
||||
it != otextlist.end(); it++) {
|
||||
os << (*it).c_str();
|
||||
}
|
||||
os << "</body></html>" << endl;
|
||||
os << "</body></html>" << "\n";
|
||||
data(array);
|
||||
}
|
||||
|
||||
void RecollProtocol::htmlDoSearch(const QueryDesc& qd)
|
||||
{
|
||||
qDebug() << "q" << qd.query << "option" << qd.opt << "page" << qd.page <<
|
||||
"isdet" << qd.isDetReq << endl;
|
||||
"isdet" << qd.isDetReq << "\n";
|
||||
|
||||
mimeType("text/html");
|
||||
|
||||
|
||||
@ -312,7 +312,7 @@ bool RecollProtocol::doSearch(const QueryDesc& qd)
|
||||
|
||||
char opt = qd.opt.isEmpty() ? 'l' : qd.opt.toUtf8().at(0);
|
||||
string qs = (const char *)qd.query.toUtf8();
|
||||
Rcl::SearchData *sd = 0;
|
||||
std::shared_ptr<Rcl::SearchData> sdata;
|
||||
if (opt != 'l') {
|
||||
Rcl::SearchDataClause *clp = 0;
|
||||
if (opt == 'f') {
|
||||
@ -321,20 +321,19 @@ bool RecollProtocol::doSearch(const QueryDesc& qd)
|
||||
clp = new Rcl::SearchDataClauseSimple(opt == 'o' ? Rcl::SCLT_OR :
|
||||
Rcl::SCLT_AND, qs);
|
||||
}
|
||||
sd = new Rcl::SearchData(Rcl::SCLT_OR, m_stemlang);
|
||||
if (sd && clp) {
|
||||
sd->addClause(clp);
|
||||
sdata = std::make_shared<Rcl::SearchData>(Rcl::SCLT_OR, m_stemlang);
|
||||
if (sdata && clp) {
|
||||
sdata->addClause(clp);
|
||||
}
|
||||
} else {
|
||||
sd = wasaStringToRcl(o_rclconfig, m_stemlang, qs, m_reason);
|
||||
sdata = wasaStringToRcl(o_rclconfig, m_stemlang, qs, m_reason);
|
||||
}
|
||||
if (!sd) {
|
||||
if (!sdata) {
|
||||
m_reason = "Internal Error: cant build search";
|
||||
error(KIO::ERR_SLAVE_DEFINED, u8s2qs(m_reason));
|
||||
return false;
|
||||
}
|
||||
|
||||
std::shared_ptr<Rcl::SearchData> sdata(sd);
|
||||
std::shared_ptr<Rcl::Query>query(new Rcl::Query(m_rcldb.get()));
|
||||
query->setCollapseDuplicates(prefs.collapseDuplicates);
|
||||
if (!query->setQuery(sdata)) {
|
||||
|
||||
@ -40,15 +40,15 @@ public:
|
||||
m_parent = proto;
|
||||
}
|
||||
|
||||
virtual bool append(const std::string& data);
|
||||
virtual bool append(const std::string& data, int, const Rcl::Doc&) {
|
||||
virtual bool append(const std::string& data) override;
|
||||
virtual bool append(const std::string& data, int, const Rcl::Doc&) override {
|
||||
return append(data);
|
||||
}
|
||||
virtual std::string detailsLink();
|
||||
virtual const std::string& parFormat();
|
||||
virtual std::string nextUrl();
|
||||
virtual std::string prevUrl();
|
||||
virtual std::string pageTop();
|
||||
virtual std::string detailsLink() override;
|
||||
virtual const std::string& parFormat() override;
|
||||
virtual std::string nextUrl() override;
|
||||
virtual std::string prevUrl() override;
|
||||
virtual std::string pageTop() override;
|
||||
|
||||
private:
|
||||
RecollProtocol *m_parent;
|
||||
@ -151,12 +151,12 @@ class RecollProtocol : public KIO::SlaveBase {
|
||||
public:
|
||||
RecollProtocol(const QByteArray& pool, const QByteArray& app);
|
||||
virtual ~RecollProtocol();
|
||||
virtual void mimetype(const QUrl& url);
|
||||
virtual void get(const QUrl& url);
|
||||
virtual void mimetype(const QUrl& url) override;
|
||||
virtual void get(const QUrl& url) override;
|
||||
// The directory mode is not available with KDE 4.0, I could find
|
||||
// no way to avoid crashing kdirmodel
|
||||
virtual void stat(const QUrl& url);
|
||||
virtual void listDir(const QUrl& url);
|
||||
virtual void stat(const QUrl& url) override;
|
||||
virtual void listDir(const QUrl& url) override;
|
||||
|
||||
static RclConfig *o_rclconfig;
|
||||
|
||||
|
||||
@ -119,21 +119,19 @@ PHP_METHOD(Query, query)
|
||||
}
|
||||
|
||||
pRclDb->setAbstractParams(-1, maxchars, ctxwords);
|
||||
Rcl::SearchData *sd = 0;
|
||||
|
||||
// jf: the original implementation built an AND clause. It would
|
||||
// be nice to offer an option, but the next best thing is to
|
||||
// default to the query language
|
||||
sd = wasaStringToRcl(rclconfig, "english", qs, reason);
|
||||
auto sdata = wasaStringToRcl(rclconfig, "english", qs, reason);
|
||||
|
||||
if (!sd) {
|
||||
if (!sdata) {
|
||||
cerr << "Query string interpretation failed: " << reason << endl;
|
||||
RETURN_BOOL(false);
|
||||
}
|
||||
|
||||
std::shared_ptr<Rcl::SearchData> rq(sd);
|
||||
Rcl::Query *pRclQuery = new Rcl::Query(pRclDb);
|
||||
pRclQuery->setQuery(rq);
|
||||
pRclQuery->setQuery(sdata);
|
||||
|
||||
query_object *obj = (query_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
|
||||
obj->pRclQuery = pRclQuery;
|
||||
@ -235,7 +233,7 @@ zend_module_entry recoll_module_entry = {
|
||||
|
||||
#ifdef COMPILE_DL_RECOLL
|
||||
extern "C" {
|
||||
ZEND_GET_MODULE(recoll)
|
||||
ZEND_GET_MODULE(recoll)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user