compilerplugins/Makefile-clang.mk | 10 ++- compilerplugins/clang/bodynotinblock.hxx | 2 compilerplugins/clang/checkconfigmacros.cxx | 45 +++++++++++++--- compilerplugins/clang/literalalternative.cxx | 2 compilerplugins/clang/plugin.cxx | 2 compilerplugins/clang/pluginhandler.hxx | 2 compilerplugins/clang/postfixincrementfix.hxx | 2 compilerplugins/clang/rtlconstasciimacro.cxx | 14 ++++ compilerplugins/clang/sallogareas.hxx | 2 compilerplugins/clang/store/lclstaticfix.hxx | 2 compilerplugins/clang/store/referencecasting.hxx | 2 compilerplugins/clang/store/removeforwardstringdecl.hxx | 2 compilerplugins/clang/store/tutorial/tutorial1.hxx | 2 compilerplugins/clang/store/tutorial/tutorial2.hxx | 2 compilerplugins/clang/store/tutorial/tutorial3.hxx | 2 compilerplugins/clang/store/unusedcode.cxx | 2 compilerplugins/clang/unusedvariablecheck.hxx | 2 sal/qa/rtl/strings/test_oustring_compare.cxx | 18 +++--- 18 files changed, 80 insertions(+), 35 deletions(-)
New commits: commit 2c7b6aa7a3127370afa41c1e83b2c198da504055 Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 19:42:35 2013 +0200 rewrite OUString test to not trigger literalalternative plugin warnings Change-Id: Ic359209c44171ab42fa21cd300b433facd3c5ea6 diff --git a/sal/qa/rtl/strings/test_oustring_compare.cxx b/sal/qa/rtl/strings/test_oustring_compare.cxx index 7f56546..051d9e7 100644 --- a/sal/qa/rtl/strings/test_oustring_compare.cxx +++ b/sal/qa/rtl/strings/test_oustring_compare.cxx @@ -44,20 +44,22 @@ CPPUNIT_TEST_SUITE_REGISTRATION(test::oustring::Compare); void test::oustring::Compare::equalsIgnoreAsciiCaseAscii() { - CPPUNIT_ASSERT(!rtl::OUString().equalsIgnoreAsciiCaseAscii("abc")); - CPPUNIT_ASSERT(!rtl::OUString().equalsIgnoreAsciiCaseAsciiL( - RTL_CONSTASCII_STRINGPARAM("abc"))); + const char* const abc = "abc"; + const char* const abcd = "abcd"; + const char* const empty = ""; + CPPUNIT_ASSERT(!rtl::OUString().equalsIgnoreAsciiCaseAscii(abc)); + CPPUNIT_ASSERT(!rtl::OUString().equalsIgnoreAsciiCaseAsciiL(abc,3)); CPPUNIT_ASSERT(!rtl::OUString("abc"). - equalsIgnoreAsciiCaseAscii("")); + equalsIgnoreAsciiCaseAscii(empty)); CPPUNIT_ASSERT(!rtl::OUString("abc"). - equalsIgnoreAsciiCaseAsciiL(RTL_CONSTASCII_STRINGPARAM(""))); + equalsIgnoreAsciiCaseAsciiL(empty,0)); CPPUNIT_ASSERT(rtl::OUString("abc"). - equalsIgnoreAsciiCaseAscii("abc")); + equalsIgnoreAsciiCaseAscii(abc)); CPPUNIT_ASSERT(!rtl::OUString("abcd"). - equalsIgnoreAsciiCaseAscii("abc")); + equalsIgnoreAsciiCaseAscii(abc)); CPPUNIT_ASSERT(!rtl::OUString("abc"). - equalsIgnoreAsciiCaseAscii("abcd")); + equalsIgnoreAsciiCaseAscii(abcd)); } void test::oustring::Compare::compareToIgnoreAsciiCase() commit 6d114cda2c5503148eef834624cb9339222a4414 Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 19:18:34 2013 +0200 make compiler plugin warnings follow WaE Change-Id: I72f1a11ce86d66e773e66116c725310df77fce39 diff --git a/compilerplugins/clang/plugin.cxx b/compilerplugins/clang/plugin.cxx index 4df8bac..3300908 100644 --- a/compilerplugins/clang/plugin.cxx +++ b/compilerplugins/clang/plugin.cxx @@ -34,13 +34,11 @@ DiagnosticBuilder Plugin::report( DiagnosticsEngine::Level level, StringRef mess SourceLocation loc ) { DiagnosticsEngine& diag = compiler.getDiagnostics(); -#if 0 // Do some mappings (e.g. for -Werror) that clang does not do for custom messages for some reason. if( level == DiagnosticsEngine::Warning && diag.getWarningsAsErrors()) level = DiagnosticsEngine::Error; if( level == DiagnosticsEngine::Error && diag.getErrorsAsFatal()) level = DiagnosticsEngine::Fatal; -#endif string fullMessage = ( message + " [loplugin]" ).str(); if( loc.isValid()) return diag.Report( loc, diag.getCustomDiagID( level, fullMessage )); commit c4cca49f49408bc4094bdfcf782de2f7cd16ce6a Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 18:58:38 2013 +0200 obey --enable-werror when building clang plugin Change-Id: I8ca9b09a6ffd4b2f00740563fa9682fdabb26b3d diff --git a/compilerplugins/Makefile-clang.mk b/compilerplugins/Makefile-clang.mk index 04b938f..3e7ef93 100644 --- a/compilerplugins/Makefile-clang.mk +++ b/compilerplugins/Makefile-clang.mk @@ -31,6 +31,10 @@ CLANGOUTDIR=$(BUILDDIR)/compilerplugins/obj QUIET=$(if $(VERBOSE)$(verbose),,@) +ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE) +CLANGWERROR := -Werror +endif + compilerplugins: compilerplugins-build # The list of source files, generated automatically (all files in clang/, but not subdirs). @@ -69,7 +73,7 @@ CLANGOBJS= define clangbuildsrc $(3): $(2) $(SRCDIR)/compilerplugins/Makefile-clang.mk $(CLANGOUTDIR)/clang-timestamp @echo [build CXX] $(subst $(SRCDIR)/,,$(2)) - $(QUIET)$(CXX) $(CLANGCXXFLAGS) $(CLANGDEFS) $(CLANGINCLUDES) -I$(BUILDDIR)/config_host $(2) -fPIC -std=c++11 -c -o $(3) -MMD -MT $(3) -MP -MF $(CLANGOUTDIR)/$(1).d + $(QUIET)$(CXX) $(CLANGCXXFLAGS) $(CLANGWERROR) $(CLANGDEFS) $(CLANGINCLUDES) -I$(BUILDDIR)/config_host $(2) -fPIC -std=c++11 -c -o $(3) -MMD -MT $(3) -MP -MF $(CLANGOUTDIR)/$(1).d -include $(CLANGOUTDIR)/$(1).d commit 6b1f64ed09edcd712460123fbc32bc41cf81c321 Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 18:54:17 2013 +0200 reoder stuff in makefile At the top should be stuff to set manually if needed. Change-Id: I516ac6df8102f00f6fc34c4c87d040688fcc2e99 diff --git a/compilerplugins/Makefile-clang.mk b/compilerplugins/Makefile-clang.mk index 2c71d8c..04b938f 100644 --- a/compilerplugins/Makefile-clang.mk +++ b/compilerplugins/Makefile-clang.mk @@ -13,8 +13,6 @@ # Compile flags ('make CLANGCXXFLAGS=-g' if you need to debug the plugin) CLANGCXXFLAGS=-O2 -Wall -Wextra -g -QUIET=$(if $(VERBOSE)$(verbose),,@) - # The uninteresting rest. # Clang headers require these. @@ -31,6 +29,8 @@ CLANGINDIR=$(SRCDIR)/compilerplugins/clang # plugin will cause cache misses with ccache. CLANGOUTDIR=$(BUILDDIR)/compilerplugins/obj +QUIET=$(if $(VERBOSE)$(verbose),,@) + compilerplugins: compilerplugins-build # The list of source files, generated automatically (all files in clang/, but not subdirs). commit b0a650ff8ab553bf3a86f4dfd85b481ef10bbdff Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 18:50:15 2013 +0200 update for PPCallbacks API changes in Clang3.3 Change-Id: I8493afa8e2264a42fba090c9c72f36f36cb2d165 diff --git a/compilerplugins/clang/checkconfigmacros.cxx b/compilerplugins/clang/checkconfigmacros.cxx index 3a22045..8524d7b 100644 --- a/compilerplugins/clang/checkconfigmacros.cxx +++ b/compilerplugins/clang/checkconfigmacros.cxx @@ -32,11 +32,19 @@ class CheckConfigMacros public: explicit CheckConfigMacros( CompilerInstance& compiler ); virtual void run() override; +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 virtual void MacroDefined( const Token& macroToken, const MacroInfo* info ) override; - virtual void MacroUndefined( const Token& macroToken , const MacroInfo* info ) override; + virtual void MacroUndefined( const Token& macroToken, const MacroInfo* info ) override; virtual void Ifdef( SourceLocation location, const Token& macroToken ) override; virtual void Ifndef( SourceLocation location, const Token& macroToken ) override; virtual void Defined( const Token& macroToken ) override; +#else + virtual void MacroDefined( const Token& macroToken, const MacroDirective* info ) override; + virtual void MacroUndefined( const Token& macroToken, const MacroDirective* info ) override; + virtual void Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override; + virtual void Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* info ) override; + virtual void Defined( const Token& macroToken, const MacroDirective* info ) override; +#endif private: void checkMacro( const Token& macroToken, SourceLocation location ); std::set< string > configMacros; @@ -53,9 +61,16 @@ void CheckConfigMacros::run() // nothing, only check preprocessor usage } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroInfo* info ) { - const char* filename = compiler.getSourceManager().getPresumedLoc( info->getDefinitionLoc()).getFilename(); + SourceLocation location = info->getDefinitionLoc(); +#else +void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroDirective* info ) + { + SourceLocation location = info->getLocation(); +#endif + const char* filename = compiler.getSourceManager().getPresumedLoc( location ).getFilename(); if( filename != NULL && ( strncmp( filename, BUILDDIR "/config_host/", strlen( BUILDDIR "/config_host/" )) == 0 || strncmp( filename, BUILDDIR "/config_build/", strlen( BUILDDIR "/config_build/" )) == 0 )) @@ -65,22 +80,38 @@ void CheckConfigMacros::MacroDefined( const Token& macroToken, const MacroInfo* } } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroInfo* ) +#else +void CheckConfigMacros::MacroUndefined( const Token& macroToken, const MacroDirective* ) +#endif { configMacros.erase( macroToken.getIdentifierInfo()->getName()); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken ) +#else +void CheckConfigMacros::Ifdef( SourceLocation location, const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, location ); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken ) +#else +void CheckConfigMacros::Ifndef( SourceLocation location, const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, location ); } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 2 void CheckConfigMacros::Defined( const Token& macroToken ) +#else +void CheckConfigMacros::Defined( const Token& macroToken, const MacroDirective* ) +#endif { checkMacro( macroToken, macroToken.getLocation()); } diff --git a/compilerplugins/clang/rtlconstasciimacro.cxx b/compilerplugins/clang/rtlconstasciimacro.cxx index 331401a..d384314 100644 --- a/compilerplugins/clang/rtlconstasciimacro.cxx +++ b/compilerplugins/clang/rtlconstasciimacro.cxx @@ -33,7 +33,12 @@ class RtlConstAsciiMacro bool VisitCXXConstructExpr( CXXConstructExpr* expr ); bool VisitCXXTemporaryObjectExpr( CXXTemporaryObjectExpr* expr ); bool VisitStringLiteral( const StringLiteral* literal ); +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 3 virtual void MacroExpands( const Token& macro, const MacroInfo* info, SourceRange range ) override; +#else + virtual void MacroExpands( const Token& macro, const MacroDirective* directive, + SourceRange range, const MacroArgs* args ) override; +#endif private: map< SourceLocation, SourceLocation > expansions; // start location -> end location bool searchingForString; @@ -53,7 +58,12 @@ void RtlConstAsciiMacro::run() } +#if __clang_major__ < 3 || __clang_major__ == 3 && __clang_minor__ < 3 void RtlConstAsciiMacro::MacroExpands( const Token& macro, const MacroInfo*, SourceRange range ) +#else +void RtlConstAsciiMacro::MacroExpands( const Token& macro, const MacroDirective*, + SourceRange range, const MacroArgs* ) +#endif { if( macro.getIdentifierInfo()->getName() != "RTL_CONSTASCII_USTRINGPARAM" ) return; commit a0d320096ceadc64f2b3b1022a3e52f307a4d0f2 Author: LuboÅ¡ LuÅák <l.lu...@suse.cz> Date: Fri May 31 18:34:11 2013 +0200 mark all virtuals in the clang plugin as override In order to help catch Clang API changes. Change-Id: I5738f5dff405f7a2dd377c983fb32c1c7a2ff921 diff --git a/compilerplugins/clang/bodynotinblock.hxx b/compilerplugins/clang/bodynotinblock.hxx index 9c5ed78..e6ad1ab 100644 --- a/compilerplugins/clang/bodynotinblock.hxx +++ b/compilerplugins/clang/bodynotinblock.hxx @@ -22,7 +22,7 @@ class BodyNotInBlock { public: explicit BodyNotInBlock( CompilerInstance& compiler ); - virtual void run(); + virtual void run() override; bool VisitFunctionDecl( const FunctionDecl* declaration ); private: typedef vector< const Stmt* > StmtParents; diff --git a/compilerplugins/clang/checkconfigmacros.cxx b/compilerplugins/clang/checkconfigmacros.cxx index 3ffaff8..3a22045 100644 --- a/compilerplugins/clang/checkconfigmacros.cxx +++ b/compilerplugins/clang/checkconfigmacros.cxx @@ -31,12 +31,12 @@ class CheckConfigMacros { public: explicit CheckConfigMacros( CompilerInstance& compiler ); - virtual void run(); - virtual void MacroDefined( const Token& macroToken, const MacroInfo* info ); - virtual void MacroUndefined( const Token& macroToken , const MacroInfo* info ); - virtual void Ifdef( SourceLocation location, const Token& macroToken ); - virtual void Ifndef( SourceLocation location, const Token& macroToken ); - virtual void Defined( const Token& macroToken ); + virtual void run() override; + virtual void MacroDefined( const Token& macroToken, const MacroInfo* info ) override; + virtual void MacroUndefined( const Token& macroToken , const MacroInfo* info ) override; + virtual void Ifdef( SourceLocation location, const Token& macroToken ) override; + virtual void Ifndef( SourceLocation location, const Token& macroToken ) override; + virtual void Defined( const Token& macroToken ) override; private: void checkMacro( const Token& macroToken, SourceLocation location ); std::set< string > configMacros; diff --git a/compilerplugins/clang/literalalternative.cxx b/compilerplugins/clang/literalalternative.cxx index f856404..4d2711c 100644 --- a/compilerplugins/clang/literalalternative.cxx +++ b/compilerplugins/clang/literalalternative.cxx @@ -23,7 +23,7 @@ class LiteralAlternative: public: explicit LiteralAlternative(CompilerInstance & compiler): Plugin(compiler) {} - virtual void run() { TraverseDecl(compiler.getASTContext().getTranslationUnitDecl()); } + virtual void run() override { TraverseDecl(compiler.getASTContext().getTranslationUnitDecl()); } bool VisitCallExpr(const CallExpr * expr); }; diff --git a/compilerplugins/clang/pluginhandler.hxx b/compilerplugins/clang/pluginhandler.hxx index fcba582..ef960d1f 100644 --- a/compilerplugins/clang/pluginhandler.hxx +++ b/compilerplugins/clang/pluginhandler.hxx @@ -28,7 +28,7 @@ class PluginHandler public: PluginHandler( CompilerInstance& compiler, const vector< string >& args ); virtual ~PluginHandler(); - virtual void HandleTranslationUnit( ASTContext& context ); + virtual void HandleTranslationUnit( ASTContext& context ) override; static void registerPlugin( Plugin* (*create)( CompilerInstance&, Rewriter& ), const char* optionName, bool isRewriter ); private: void handleOption( const string& option ); diff --git a/compilerplugins/clang/postfixincrementfix.hxx b/compilerplugins/clang/postfixincrementfix.hxx index d65c197..29756cf 100644 --- a/compilerplugins/clang/postfixincrementfix.hxx +++ b/compilerplugins/clang/postfixincrementfix.hxx @@ -22,7 +22,7 @@ class PostfixIncrementFix { public: explicit PostfixIncrementFix( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; bool VisitFunctionDecl( const FunctionDecl* declaration ); private: typedef std::vector< const Stmt* > StmtParents; diff --git a/compilerplugins/clang/rtlconstasciimacro.cxx b/compilerplugins/clang/rtlconstasciimacro.cxx index f1a9d02..331401a 100644 --- a/compilerplugins/clang/rtlconstasciimacro.cxx +++ b/compilerplugins/clang/rtlconstasciimacro.cxx @@ -29,11 +29,11 @@ class RtlConstAsciiMacro { public: explicit RtlConstAsciiMacro( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; bool VisitCXXConstructExpr( CXXConstructExpr* expr ); bool VisitCXXTemporaryObjectExpr( CXXTemporaryObjectExpr* expr ); bool VisitStringLiteral( const StringLiteral* literal ); - virtual void MacroExpands( const Token& macro, const MacroInfo* info, SourceRange range ); + virtual void MacroExpands( const Token& macro, const MacroInfo* info, SourceRange range ) override; private: map< SourceLocation, SourceLocation > expansions; // start location -> end location bool searchingForString; diff --git a/compilerplugins/clang/sallogareas.hxx b/compilerplugins/clang/sallogareas.hxx index 2c0326d..e00086b 100644 --- a/compilerplugins/clang/sallogareas.hxx +++ b/compilerplugins/clang/sallogareas.hxx @@ -24,7 +24,7 @@ class SalLogAreas { public: explicit SalLogAreas( CompilerInstance& compiler ); - virtual void run(); + virtual void run() override; bool VisitFunctionDecl( const FunctionDecl* function ); bool VisitCallExpr( const CallExpr* call ); private: diff --git a/compilerplugins/clang/store/lclstaticfix.hxx b/compilerplugins/clang/store/lclstaticfix.hxx index 256c6dd..48e9c66 100644 --- a/compilerplugins/clang/store/lclstaticfix.hxx +++ b/compilerplugins/clang/store/lclstaticfix.hxx @@ -22,7 +22,7 @@ class LclStaticFix { public: explicit LclStaticFix( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; bool VisitFunctionDecl( const FunctionDecl* declaration ); }; diff --git a/compilerplugins/clang/store/referencecasting.hxx b/compilerplugins/clang/store/referencecasting.hxx index 732e32d..454d5ee 100644 --- a/compilerplugins/clang/store/referencecasting.hxx +++ b/compilerplugins/clang/store/referencecasting.hxx @@ -22,7 +22,7 @@ class ReferenceCasting { public: explicit ReferenceCasting( CompilerInstance& compiler ); - virtual void run(); + virtual void run() override; bool VisitCXXConstructExpr( CXXConstructExpr* cce ); }; diff --git a/compilerplugins/clang/store/removeforwardstringdecl.hxx b/compilerplugins/clang/store/removeforwardstringdecl.hxx index 774bbc3..552aa4d 100644 --- a/compilerplugins/clang/store/removeforwardstringdecl.hxx +++ b/compilerplugins/clang/store/removeforwardstringdecl.hxx @@ -22,7 +22,7 @@ class RemoveForwardStringDecl { public: explicit RemoveForwardStringDecl( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; bool VisitNamespaceDecl( const NamespaceDecl* declaration ); private: bool tryRemoveStringForwardDecl( const Decl* decl ); diff --git a/compilerplugins/clang/store/tutorial/tutorial1.hxx b/compilerplugins/clang/store/tutorial/tutorial1.hxx index 144d0dc..bb5fe2e 100644 --- a/compilerplugins/clang/store/tutorial/tutorial1.hxx +++ b/compilerplugins/clang/store/tutorial/tutorial1.hxx @@ -27,7 +27,7 @@ class Tutorial1 // Ctor, nothing special. Tutorial1( CompilerInstance& compiler ); // The function that will be called to perform the actual action. - virtual void run(); + virtual void run() override; // Function from Clang, it will be called for every return statement in the source. bool VisitReturnStmt( const ReturnStmt* returnstmt ); }; diff --git a/compilerplugins/clang/store/tutorial/tutorial2.hxx b/compilerplugins/clang/store/tutorial/tutorial2.hxx index 71cec47..4fa6232 100644 --- a/compilerplugins/clang/store/tutorial/tutorial2.hxx +++ b/compilerplugins/clang/store/tutorial/tutorial2.hxx @@ -23,7 +23,7 @@ class Tutorial2 { public: Tutorial2( CompilerInstance& compiler ); - virtual void run(); + virtual void run() override; // Will be called for every if statement. bool VisitIfStmt( const IfStmt* ifstmt ); private: diff --git a/compilerplugins/clang/store/tutorial/tutorial3.hxx b/compilerplugins/clang/store/tutorial/tutorial3.hxx index a3dd0bd..b82f149 100644 --- a/compilerplugins/clang/store/tutorial/tutorial3.hxx +++ b/compilerplugins/clang/store/tutorial/tutorial3.hxx @@ -24,7 +24,7 @@ class Tutorial3 public: // One more argument for ctor. Tutorial3( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; // Will be called for every if statement. bool VisitIfStmt( const IfStmt* ifstmt ); private: diff --git a/compilerplugins/clang/store/unusedcode.cxx b/compilerplugins/clang/store/unusedcode.cxx index 37c626e..ed5b2ea 100644 --- a/compilerplugins/clang/store/unusedcode.cxx +++ b/compilerplugins/clang/store/unusedcode.cxx @@ -29,7 +29,7 @@ class UnusedCode { public: explicit UnusedCode( CompilerInstance& compiler, Rewriter& rewriter ); - virtual void run(); + virtual void run() override; bool VisitFunctionDecl( const FunctionDecl* declaration ); }; diff --git a/compilerplugins/clang/unusedvariablecheck.hxx b/compilerplugins/clang/unusedvariablecheck.hxx index ef14942..695971e 100644 --- a/compilerplugins/clang/unusedvariablecheck.hxx +++ b/compilerplugins/clang/unusedvariablecheck.hxx @@ -22,7 +22,7 @@ class UnusedVariableCheck { public: explicit UnusedVariableCheck( CompilerInstance& compiler ); - virtual void run(); + virtual void run() override; bool VisitVarDecl( const VarDecl* var ); };
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits