[Libreoffice-commits] core.git: writerfilter/Library_writerfilter.mk writerfilter/README writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Thu Oct 16 12:13:24 PDT 2014


 writerfilter/Library_writerfilter.mk                     |    2 -
 writerfilter/README                                      |    3 ++
 writerfilter/source/dmapper/DomainMapperTableHandler.cxx |    3 +-
 writerfilter/source/filter/ImportFilter.cxx              |    3 +-
 writerfilter/source/filter/RtfFilter.cxx                 |    3 +-
 writerfilter/source/resourcemodel/TagLogger.cxx          |   16 +++++++++++++++
 6 files changed, 26 insertions(+), 4 deletions(-)

New commits:
commit 9401b1be3480037f2dfcb7b6daf069137ccd7c42
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu Oct 16 21:12:34 2014 +0200

    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

diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index 4a7e3fb..f4c2c9e 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 0e8d1dc..0d492e4 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 3b99048..0aa4be1 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 3740b3b..1eb2670 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 3a7e6c4..01a5895 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 58a904e..d65566d 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 );
     }
 


More information about the Libreoffice-commits mailing list