handle REFILTERROR in execm

This commit is contained in:
dockes 2009-11-18 12:33:05 +00:00
parent dd6acb07cc
commit 8118002942
5 changed files with 20 additions and 8 deletions

View File

@ -9,13 +9,13 @@ try:
from chm import chm,chmlib
except:
print "RECFILTERROR HELPERNOTFOUND python:chm"
exit(1);
sys.exit(1);
try:
from HTMLParser import HTMLParser
except:
print "RECFILTERROR HELPERNOTFOUND python:HTMLParser"
exit(1);
sys.exit(1);
class ChmTopicsParser(HTMLParser):
"""Parse the chm's Topic file which is basically

View File

@ -17,7 +17,7 @@ class RclExecM:
def rclog(self, s, doexit = 0, exitvalue = 1):
print >> sys.stderr, "RCLMFILT:", self.myname, ":", s
if doexit:
exit(exitvalue)
sys.exit(exitvalue)
# Our worker sometimes knows the mime types of the data it sends
def setmimetype(self, mt):
self.mimetype = mt

View File

@ -1,11 +1,13 @@
#!/usr/bin/env python
import rclexecm
import sys
try:
from icalendar import Calendar, Event
except:
print "RECFILTERROR HELPERNOTFOUND python:icalendar"
exit(1);
sys.exit(1);
class IcalExtractor:
def __init__(self, em):

View File

@ -60,6 +60,7 @@ bool MimeHandlerExecMultiple::startCmd()
m_cmd.putenv(m_forPreview ? "RECOLL_FILTER_FORPREVIEW=yes" :
"RECOLL_FILTER_FORPREVIEW=no");
if (m_cmd.startExec(cmd, myparams, 1, 1) < 0) {
m_reason = string("RECFILTERROR HELPERNOTFOUND ") + cmd;
missingHelper = true;
return false;
}
@ -90,6 +91,15 @@ bool MimeHandlerExecMultiple::readDataElement(string& name, string &data)
return true;
}
// Filters will sometimes abort before entering the real protocol, ie if
// a module can't be loaded. Check the special filter error first word:
if (ibuf.find("RECFILTERROR ") == 0) {
m_reason = ibuf;
if (ibuf.find("HELPERNOTFOUND") != string::npos)
missingHelper = true;
return false;
}
// We're expecting something like Name: len\n
list<string> tokens;
stringToTokens(ibuf, tokens);

View File

@ -68,14 +68,14 @@ class MimeHandlerExecMultiple : public MimeHandlerExec {
{}
// No resources to clean up, the ExecCmd destructor does it.
virtual ~MimeHandlerExecMultiple() {}
virtual bool next_document();
virtual void clear() {
MimeHandlerExec::clear();
}
virtual bool set_document_file(const string &file_path) {
m_filefirst = true;
return MimeHandlerExec::set_document_file(file_path);
}
virtual bool next_document();
// skip_to and clear inherited from MimeHandlerExec
private:
bool startCmd();
bool readDataElement(string& name, string& data);