You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.4 KiB
93 lines
3.4 KiB
From 0ac751a600e77d574aadca9e852040da5d7bbb41 Mon Sep 17 00:00:00 2001
|
|
From: David Tardon <dtardon@redhat.com>
|
|
Date: Thu, 29 May 2014 13:31:54 +0200
|
|
Subject: [PATCH 07/18] parse zipped FictionBook 2 files again
|
|
|
|
Change-Id: I04eda7844a5557f834f3ada2cef991b0a181c8a0
|
|
(cherry picked from commit 2ac1d3949c383656e54d54556e52631cf4f45b71)
|
|
---
|
|
...01-parse-zipped-FictionBook-2-files-again.patch | 58 ++++++++++++++++++++++
|
|
external/libebook/UnpackedTarball_libebook.mk | 1 +
|
|
2 files changed, 59 insertions(+)
|
|
create mode 100644 external/libebook/0001-parse-zipped-FictionBook-2-files-again.patch
|
|
|
|
diff --git a/external/libebook/0001-parse-zipped-FictionBook-2-files-again.patch b/external/libebook/0001-parse-zipped-FictionBook-2-files-again.patch
|
|
new file mode 100644
|
|
index 0000000..d068e79
|
|
--- /dev/null
|
|
+++ b/external/libebook/0001-parse-zipped-FictionBook-2-files-again.patch
|
|
@@ -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
|
|
+
|
|
diff --git a/external/libebook/UnpackedTarball_libebook.mk b/external/libebook/UnpackedTarball_libebook.mk
|
|
index bcc098a..4986981 100644
|
|
--- a/external/libebook/UnpackedTarball_libebook.mk
|
|
+++ b/external/libebook/UnpackedTarball_libebook.mk
|
|
@@ -15,6 +15,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libebook,1))
|
|
|
|
$(eval $(call gb_UnpackedTarball_add_patches,libebook,\
|
|
external/libebook/0001-blind-attempt-to-workaround-MSVC-bug.patch \
|
|
+ external/libebook/0001-parse-zipped-FictionBook-2-files-again.patch \
|
|
))
|
|
|
|
# vim: set noet sw=4 ts=4:
|
|
--
|
|
1.9.3
|
|
|