[Libreoffice-commits] libvisio.git: src/lib
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Mon Aug 12 08:08:04 UTC 2019
src/lib/VDXParser.cpp | 4 +---
src/lib/VSDXMLHelper.cpp | 4 +---
src/lib/VSDXMetaData.cpp | 4 +---
src/lib/VSDXParser.cpp | 4 +---
src/lib/VSDXTheme.cpp | 4 +---
src/lib/VisioDocument.cpp | 4 +---
src/lib/libvisio_xml.cpp | 14 +++++++++++---
src/lib/libvisio_xml.h | 11 +++--------
8 files changed, 20 insertions(+), 29 deletions(-)
New commits:
commit 8f0ce0bb48185458bcaa0efb8cc01da7386e208a
Author: David Tardon <dtardon at redhat.com>
AuthorDate: Mon Aug 12 10:01:14 2019 +0200
Commit: David Tardon <dtardon at redhat.com>
CommitDate: Mon Aug 12 10:01:14 2019 +0200
simplify creation of xmlReader
Change-Id: I95815a3f19c612a2926ea1d80f07abbaba1f5595
diff --git a/src/lib/VDXParser.cpp b/src/lib/VDXParser.cpp
index aecdf20..a5c204d 100644
--- a/src/lib/VDXParser.cpp
+++ b/src/lib/VDXParser.cpp
@@ -75,9 +75,7 @@ bool libvisio::VDXParser::processXmlDocument(librevenge::RVNGInputStream *input)
if (!input)
return false;
- const std::shared_ptr<xmlTextReader> reader(
- xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET|XML_PARSE_RECOVER),
- xmlFreeTextReader);
+ auto reader = xmlReaderForStream(input);
if (!reader)
return false;
int ret = xmlTextReaderRead(reader.get());
diff --git a/src/lib/VSDXMLHelper.cpp b/src/lib/VSDXMLHelper.cpp
index aa6a595..24045b6 100644
--- a/src/lib/VSDXMLHelper.cpp
+++ b/src/lib/VSDXMLHelper.cpp
@@ -91,9 +91,7 @@ libvisio::VSDXRelationships::VSDXRelationships(librevenge::RVNGInputStream *inpu
{
if (input)
{
- const std::shared_ptr<xmlTextReader> reader(
- xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET|XML_PARSE_RECOVER),
- xmlFreeTextReader);
+ auto reader = xmlReaderForStream(input);
if (reader)
{
bool inRelationships = false;
diff --git a/src/lib/VSDXMetaData.cpp b/src/lib/VSDXMetaData.cpp
index 33a6679..b0e5e69 100644
--- a/src/lib/VSDXMetaData.cpp
+++ b/src/lib/VSDXMetaData.cpp
@@ -120,9 +120,7 @@ bool libvisio::VSDXMetaData::parse(librevenge::RVNGInputStream *input)
XMLErrorWatcher watcher;
- const std::shared_ptr<xmlTextReader> reader(
- xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET, &watcher),
- xmlFreeTextReader);
+ auto reader = xmlReaderForStream(input, &watcher, false);
if (!reader)
return false;
diff --git a/src/lib/VSDXParser.cpp b/src/lib/VSDXParser.cpp
index a7f40db..1167ccb 100644
--- a/src/lib/VSDXParser.cpp
+++ b/src/lib/VSDXParser.cpp
@@ -304,9 +304,7 @@ void libvisio::VSDXParser::processXmlDocument(librevenge::RVNGInputStream *input
XMLErrorWatcher watcher;
- const std::shared_ptr<xmlTextReader> reader(
- xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET, &watcher),
- xmlFreeTextReader);
+ auto reader = xmlReaderForStream(input, &watcher, false);
if (!reader)
return;
diff --git a/src/lib/VSDXTheme.cpp b/src/lib/VSDXTheme.cpp
index f2c5660..59044b5 100644
--- a/src/lib/VSDXTheme.cpp
+++ b/src/lib/VSDXTheme.cpp
@@ -83,9 +83,7 @@ bool libvisio::VSDXTheme::parse(librevenge::RVNGInputStream *input)
if (!input)
return false;
- const shared_ptr<xmlTextReader> reader(
- xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET),
- xmlFreeTextReader);
+ auto reader = xmlReaderForStream(input, nullptr, false);
if (!reader)
return false;
diff --git a/src/lib/VisioDocument.cpp b/src/lib/VisioDocument.cpp
index 5b76be1..7541fd7 100644
--- a/src/lib/VisioDocument.cpp
+++ b/src/lib/VisioDocument.cpp
@@ -163,9 +163,7 @@ catch (...)
static bool isXmlVisioDocument(librevenge::RVNGInputStream *input) try
{
input->seek(0, librevenge::RVNG_SEEK_SET);
- const std::shared_ptr<xmlTextReader> reader(
- libvisio::xmlReaderForStream(input, nullptr, nullptr, XML_PARSE_NOBLANKS|XML_PARSE_NONET|XML_PARSE_RECOVER),
- xmlFreeTextReader);
+ auto reader = libvisio::xmlReaderForStream(input);
if (!reader)
return false;
int ret = xmlTextReaderRead(reader.get());
diff --git a/src/lib/libvisio_xml.cpp b/src/lib/libvisio_xml.cpp
index df0c5f9..d92e7c4 100644
--- a/src/lib/libvisio_xml.cpp
+++ b/src/lib/libvisio_xml.cpp
@@ -96,11 +96,19 @@ void XMLErrorWatcher::setError()
m_error = true;
}
-xmlTextReaderPtr xmlReaderForStream(librevenge::RVNGInputStream *input, const char *URL, const char *encoding, int options, XMLErrorWatcher *const watcher)
+std::unique_ptr<xmlTextReader, void (*)(xmlTextReaderPtr)>
+xmlReaderForStream(librevenge::RVNGInputStream *input, XMLErrorWatcher *const watcher, bool recover)
{
- xmlTextReaderPtr reader = xmlReaderForIO(vsdxInputReadFunc, vsdxInputCloseFunc, (void *)input, URL, encoding, options);
+ int options = XML_PARSE_NOBLANKS | XML_PARSE_NONET;
+ if (recover)
+ options |= XML_PARSE_RECOVER;
+ std::unique_ptr<xmlTextReader, void (*)(xmlTextReaderPtr)> reader
+ {
+ xmlReaderForIO(vsdxInputReadFunc, vsdxInputCloseFunc, (void *)input, nullptr, nullptr, options),
+ xmlFreeTextReader
+ };
if (reader)
- xmlTextReaderSetErrorHandler(reader, vsdxReaderErrorFunc, watcher);
+ xmlTextReaderSetErrorHandler(reader.get(), vsdxReaderErrorFunc, watcher);
return reader;
}
diff --git a/src/lib/libvisio_xml.h b/src/lib/libvisio_xml.h
index 2739742..c3625a9 100644
--- a/src/lib/libvisio_xml.h
+++ b/src/lib/libvisio_xml.h
@@ -37,14 +37,9 @@ private:
bool m_error;
};
-// create an xmlTextReader pointer from a librevenge::RVNGInputStream pointer
-// needs to be freed using xmlTextReaderFree function.
-
-xmlTextReaderPtr xmlReaderForStream(librevenge::RVNGInputStream *input,
- const char *URL,
- const char *encoding,
- int options,
- XMLErrorWatcher *watcher = nullptr);
+// create an xmlTextReader from a librevenge::RVNGInputStream
+std::unique_ptr<xmlTextReader, void (*)(xmlTextReaderPtr)>
+xmlReaderForStream(librevenge::RVNGInputStream *input, XMLErrorWatcher *watcher = nullptr, bool recover = true);
Colour xmlStringToColour(const xmlChar *s);
Colour xmlStringToColour(const std::shared_ptr<xmlChar> &s);
More information about the Libreoffice-commits
mailing list