summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-10-16 21:12:34 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-10-16 21:12:34 +0200
commit9401b1be3480037f2dfcb7b6daf069137ccd7c42 (patch)
tree337c5f42cc4db6aabadde1c57d05fd7b80531524
parent8bc1ee9b4cd46d645e8aca0f9ea6844c702a64c0 (diff)
writerfilter: make dmapper logging a runtime decision, not a buildtime one
It's still only enabled in debug builds, but it now requires an environment variable, not rebuilding with dbglevel=2. Change-Id: I970c7bfe0b3f547429ef37f37406a095a60c34ff
-rw-r--r--writerfilter/Library_writerfilter.mk2
-rw-r--r--writerfilter/README3
-rw-r--r--writerfilter/source/dmapper/DomainMapperTableHandler.cxx3
-rw-r--r--writerfilter/source/filter/ImportFilter.cxx3
-rw-r--r--writerfilter/source/filter/RtfFilter.cxx3
-rw-r--r--writerfilter/source/resourcemodel/TagLogger.cxx16
6 files changed, 26 insertions, 4 deletions
diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index 4a7e3fb71ea2..f4c2c9e535cb 100644
--- a/writerfilter/Library_writerfilter.mk
+++ b/writerfilter/Library_writerfilter.mk
@@ -28,7 +28,7 @@ $(eval $(call gb_Library_use_sdk_api,writerfilter))
$(eval $(call gb_Library_set_componentfile,writerfilter,writerfilter/util/writerfilter))
$(eval $(call gb_Library_add_defs,writerfilter,\
- $(if $(filter-out 0 1,$(gb_DEBUGLEVEL)), \
+ $(if $(filter-out 0,$(gb_DEBUGLEVEL)), \
-DDEBUG_DOMAINMAPPER \
) \
))
diff --git a/writerfilter/README b/writerfilter/README
index 0e8d1dc9c330..0d492e4070cd 100644
--- a/writerfilter/README
+++ b/writerfilter/README
@@ -11,6 +11,9 @@ Import filter for docx, doc and rtf.
== Source contents ==
* dmapper: the domain mapper, hiding UNO from the tokenizers, used by DOCX and RTF import
+ * The incoming traffic of dmapper can be dumped into an XML file in /tmp in
+ debug builds, start soffice with the
+ `SW_DEBUG_WRITERFILTER=1` environment variable if you want that.
* filter: the UNO filter service implementations, invoked by UNO and calling
the dmapper + one of the tokenizers
* ooxml: the docx tokenizer
diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
index 3b990485cd18..0aa4be1b663b 100644
--- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx
@@ -415,7 +415,8 @@ TableStyleSheetEntry * DomainMapperTableHandler::endTableGetTableStyle(TableInfo
#ifdef DEBUG_DOMAINMAPPER
dmapper_logger->startElement("mergedProps");
- pMergedProperties->dumpXml( dmapper_logger );
+ if (pMergedProperties)
+ pMergedProperties->dumpXml( dmapper_logger );
dmapper_logger->endElement();
#endif
diff --git a/writerfilter/source/filter/ImportFilter.cxx b/writerfilter/source/filter/ImportFilter.cxx
index 3740b3b12b08..1eb2670b2ea6 100644
--- a/writerfilter/source/filter/ImportFilter.cxx
+++ b/writerfilter/source/filter/ImportFilter.cxx
@@ -83,7 +83,8 @@ sal_Bool WriterFilter::filter( const uno::Sequence< beans::PropertyValue >& aDes
writerfilter::TagLogger::Pointer_t dmapper_logger
(writerfilter::TagLogger::getInstance("DOMAINMAPPER"));
- dmapper_logger->setFileName(sURLc);
+ if (getenv("SW_DEBUG_WRITERFILTER"))
+ dmapper_logger->setFileName(sURLc);
dmapper_logger->startDocument();
#endif
diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx
index 3a7e6c49380b..01a5895a5bf5 100644
--- a/writerfilter/source/filter/RtfFilter.cxx
+++ b/writerfilter/source/filter/RtfFilter.cxx
@@ -78,7 +78,8 @@ sal_Bool RtfFilter::filter(const uno::Sequence< beans::PropertyValue >& aDescrip
writerfilter::TagLogger::Pointer_t dmapper_logger
(writerfilter::TagLogger::getInstance("DOMAINMAPPER"));
- dmapper_logger->setFileName(sURLc);
+ if (getenv("SW_DEBUG_WRITERFILTER"))
+ dmapper_logger->setFileName(sURLc);
dmapper_logger->startDocument();
#endif
uno::Reference< io::XInputStream > xInputStream;
diff --git a/writerfilter/source/resourcemodel/TagLogger.cxx b/writerfilter/source/resourcemodel/TagLogger.cxx
index 58a904ed6e9a..d65566d56b42 100644
--- a/writerfilter/source/resourcemodel/TagLogger.cxx
+++ b/writerfilter/source/resourcemodel/TagLogger.cxx
@@ -74,12 +74,16 @@ namespace writerfilter
void TagLogger::startDocument()
{
+ if (!pWriter)
+ return;
xmlTextWriterStartDocument( pWriter, NULL, NULL, NULL );
xmlTextWriterStartElement( pWriter, BAD_CAST( "root" ) );
}
void TagLogger::endDocument()
{
+ if (!pWriter)
+ return;
xmlTextWriterEndDocument( pWriter );
xmlFreeTextWriter( pWriter );
pWriter = NULL;
@@ -149,6 +153,8 @@ namespace writerfilter
void TagLogger::startElement(const std::string & name)
{
+ if (!pWriter)
+ return;
xmlChar* xmlName = xmlCharStrdup( name.c_str() );
xmlTextWriterStartElement( pWriter, xmlName );
xmlFree( xmlName );
@@ -157,6 +163,8 @@ namespace writerfilter
void TagLogger::attribute(const std::string & name, const std::string & value)
{
+ if (!pWriter)
+ return;
xmlChar* xmlName = xmlCharStrdup( name.c_str() );
xmlChar* xmlValue = xmlCharStrdup( value.c_str() );
xmlTextWriterWriteAttribute( pWriter, xmlName, xmlValue );
@@ -173,6 +181,8 @@ namespace writerfilter
void TagLogger::attribute(const std::string & name, sal_uInt32 value)
{
+ if (!pWriter)
+ return;
xmlChar* xmlName = xmlCharStrdup( name.c_str() );
xmlTextWriterWriteFormatAttribute( pWriter, xmlName,
"%" SAL_PRIuUINT32, value );
@@ -181,6 +191,8 @@ namespace writerfilter
void TagLogger::attribute(const std::string & name, const uno::Any aAny)
{
+ if (!pWriter)
+ return;
std::string aTmpStrInt;
std::string aTmpStrFloat;
std::string aTmpStrString;
@@ -209,6 +221,8 @@ namespace writerfilter
void TagLogger::chars(const std::string & rChars)
{
+ if (!pWriter)
+ return;
xmlChar* xmlChars = xmlCharStrdup( rChars.c_str() );
xmlTextWriterWriteString( pWriter, xmlChars );
xmlFree( xmlChars );
@@ -221,6 +235,8 @@ namespace writerfilter
void TagLogger::endElement()
{
+ if (!pWriter)
+ return;
xmlTextWriterEndElement( pWriter );
}