parent
f678fa7db0
commit
f7a5844a1a
@ -0,0 +1,58 @@
|
|||||||
|
From 5690c18cb2de1bf4f3cce3da8a2132303a0c731f Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Thu, 29 May 2014 13:30:13 +0200
|
||||||
|
Subject: [PATCH] parse zipped FictionBook 2 files again
|
||||||
|
|
||||||
|
---
|
||||||
|
src/lib/EBOOKDocument.cpp | 28 +++++++++++++++++++++++++++-
|
||||||
|
1 file changed, 27 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/lib/EBOOKDocument.cpp b/src/lib/EBOOKDocument.cpp
|
||||||
|
index 5b8e7ec..c4f9913 100644
|
||||||
|
--- a/src/lib/EBOOKDocument.cpp
|
||||||
|
+++ b/src/lib/EBOOKDocument.cpp
|
||||||
|
@@ -427,6 +427,25 @@ EBOOKAPI EBOOKDocument::Confidence EBOOKDocument::isSupported(librevenge::RVNGIn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ // TODO: This needs improvement: zipped FictionBook 2 files can contain images too...
|
||||||
|
+ if (1 == input->subStreamCount())
|
||||||
|
+ {
|
||||||
|
+ const librevenge::RVNGString name(input->subStreamName(0));
|
||||||
|
+ const unsigned long size = name.size();
|
||||||
|
+ const char *const cName = name.cstr();
|
||||||
|
+ if (equal(cName + (size - 4), cName + size, ".fb2"))
|
||||||
|
+ {
|
||||||
|
+ const scoped_ptr<RVNGInputStream> fb2(input->getSubStreamById(0));
|
||||||
|
+ const Type xmlType = detectXML(fb2.get());
|
||||||
|
+ if (TYPE_FICTIONBOOK2 == xmlType)
|
||||||
|
+ {
|
||||||
|
+ if (type)
|
||||||
|
+ *type = xmlType;
|
||||||
|
+ return CONFIDENCE_EXCELLENT;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
Confidence confidence = CONFIDENCE_NONE;
|
||||||
|
@@ -533,7 +552,14 @@ EBOOKAPI EBOOKDocument::Result EBOOKDocument::parse(librevenge::RVNGInputStream
|
||||||
|
#endif
|
||||||
|
case TYPE_FICTIONBOOK2 :
|
||||||
|
{
|
||||||
|
- FB2Parser parser(input_.get());
|
||||||
|
+ RVNGInputStreamPtr_t fb2Input(input_);
|
||||||
|
+ // TODO: this needs to handle package with images too
|
||||||
|
+ if (input_->isStructured())
|
||||||
|
+ {
|
||||||
|
+ assert(1 == input->subStreamCount());
|
||||||
|
+ fb2Input.reset(input->getSubStreamById(0));
|
||||||
|
+ }
|
||||||
|
+ FB2Parser parser(fb2Input.get());
|
||||||
|
return parser.parse(document) ? RESULT_OK : RESULT_UNKNOWN_ERROR;
|
||||||
|
}
|
||||||
|
#if defined ENABLE_EXPERIMENTAL
|
||||||
|
--
|
||||||
|
1.9.3
|
||||||
|
|
Loading…
Reference in new issue