From d4edbbaedbf78bda7c835f33e63f31631666393c Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Thu, 11 Oct 2012 15:35:15 +0200 Subject: [PATCH] rclepub: use elt ids instead of hrefs + debug traces --- src/filters/rclepub | 20 ++++++++++++-------- src/internfile/mh_execm.cpp | 5 ++++- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/filters/rclepub b/src/filters/rclepub index d1b9b39c..802abb3b 100755 --- a/src/filters/rclepub +++ b/src/filters/rclepub @@ -25,7 +25,7 @@ class rclEPUB: self.em = em self.em.setmimetype(rclepub_html_mtype) - def extractone(self, path): + def extractone(self, id): """Extract one path-named internal file from the EPUB file""" #self.em.rclog("extractone: [%s]"%(path)) @@ -34,13 +34,17 @@ class rclEPUB: iseof = rclexecm.RclExecM.eofnext try: - doc = self.book.read(path) + item = self.book.get_item(id) + if item is None: + raise Exception("Item not found for id %s" % (id,)) + doc = self.book.read_item(item) doc = re.sub('''''', doc) - return (True, doc, path, iseof) + self.em.setmimetype(rclepub_html_mtype) + return (True, doc, id, iseof) except Exception, err: - self.em.rclog("openfile: failed: [%s]" % err) - return (False, "", path, iseof) + self.em.rclog("extractone: failed: [%s]" % err) + return (False, "", id, iseof) def openfile(self, params): """Open the EPUB file""" @@ -49,12 +53,12 @@ class rclEPUB: try: self.book = epub.open(params["filename:"]) except Exception, err: - self.em.rclog("openfile: failed: [%s]" % err) + self.em.rclog("openfile: epub.open failed: [%s]" % err) return False for id, item in self.book.opf.manifest.iteritems(): -# print item.__dict__ + # print item.__dict__ if item.media_type == u'application/xhtml+xml': - self.contents.append(item.href) + self.contents.append(id) return True diff --git a/src/internfile/mh_execm.cpp b/src/internfile/mh_execm.cpp index 10109eae..befd7c34 100644 --- a/src/internfile/mh_execm.cpp +++ b/src/internfile/mh_execm.cpp @@ -120,7 +120,7 @@ bool MimeHandlerExecMultiple::readDataElement(string& name, string &data) ibuf.c_str())); return false; } - LOGDEB(("MHExecMultiple: got name [%s] len: %d\n", name.c_str(), len)); + if (len / 1024 > m_maxmemberkb) { LOGERR(("MHExecMultiple: data len > maxmemberkb\n")); return false; @@ -143,6 +143,9 @@ bool MimeHandlerExecMultiple::readDataElement(string& name, string &data) len, datap->length())); return false; } + LOGDEB1(("MHExecMe:rdDtElt got: name [%s] len %d value [%s]\n", + name.c_str(), len, datap->size() > 100 ? + (datap->substr(0, 100) + " ...").c_str() : datap->c_str())); return true; }