[Libreoffice-commits] .: 6 commits - cui/source desktop/source framework/source instsetoo_native/util Makefile.in sfx2/source solenv/bin svx/source unotools/source xmloff/inc xmloff/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Jan 18 14:50:18 PST 2013


 Makefile.in                                  |    2 
 cui/source/dialogs/about.src                 |    2 
 desktop/source/app/app.cxx                   |    2 
 desktop/source/app/cmdlinehelp.cxx           |    2 
 framework/source/fwe/helper/titlehelper.cxx  |   15 ----
 instsetoo_native/util/openoffice.lst.in      |   24 +------
 sfx2/source/bastyp/bastyp.src                |    2 
 solenv/bin/modules/installer.pm              |    3 
 solenv/bin/modules/installer/download.pm     |    4 -
 solenv/bin/modules/installer/setupscript.pm  |   25 -------
 solenv/bin/modules/installer/ziplist.pm      |    4 -
 solenv/bin/modules/t/installer-setupscript.t |    1 
 svx/source/dialog/linkwarn.src               |    2 
 svx/source/src/app.src                       |    2 
 unotools/source/config/docinfohelper.cxx     |    1 
 xmloff/inc/xmloff/xmlimp.hxx                 |    8 ++
 xmloff/source/core/xmlimp.cxx                |   89 +++++++++++++++++++++------
 xmloff/source/draw/ximpshap.cxx              |    6 -
 xmloff/source/meta/xmlmetai.cxx              |   31 ++++++---
 19 files changed, 122 insertions(+), 103 deletions(-)

New commits:
commit c106167f5f6ec1bff9b2291ff8791ca6d4d411c3
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 22:14:57 2013 +0100

    PRODUCTEXTENSION: fix various obvious strings and such...
    
    ... to look pretty; most of these expect PRODUCTEXTENSION to be a word
    like "Beta" but nowadays it is ".micro.rc.alphabeta" numbers so there
    should be no space before it.
    
    ReplaceStringHookProc adds insult to injury by refusing to
    replace %ABOUTBOX variables unless some %PRODUCT is in the string.
    
    Change-Id: Ib676f3837ab0785529a226fc9359e8defacf3459

diff --git a/cui/source/dialogs/about.src b/cui/source/dialogs/about.src
index defcf90..8daf783 100644
--- a/cui/source/dialogs/about.src
+++ b/cui/source/dialogs/about.src
@@ -63,7 +63,7 @@ ModalDialog RID_DEFAULTABOUT
     };
     String ABOUT_STR_VERSION
     {
-        Text [ en-US ] = "Version %ABOUTBOXPRODUCTVERSION%ABOUTBOXPRODUCTVERSIONSUFFIX %PRODUCTEXTENSION";
+        Text [ en-US ] = "Version %ABOUTBOXPRODUCTVERSION%ABOUTBOXPRODUCTVERSIONSUFFIX";
     };
     String ABOUT_STR_DESCRIPTION
     {
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 96010c9..e384912 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -477,7 +477,7 @@ rtl::OUString ReplaceStringHookProc( const rtl::OUString& rStr )
 {
     rtl::OUString sRet(rStr);
 
-    if ( sRet.indexOf( "%PRODUCT" ) != -1 )
+    if (sRet.indexOf("%PRODUCT") != -1 || sRet.indexOf("%ABOUTBOX") != -1)
     {
         rtl::OUString sBrandName = BrandName::get();
         rtl::OUString sVersion = Version::get();
diff --git a/desktop/source/app/cmdlinehelp.cxx b/desktop/source/app/cmdlinehelp.cxx
index 8ed32f7..73d5613 100644
--- a/desktop/source/app/cmdlinehelp.cxx
+++ b/desktop/source/app/cmdlinehelp.cxx
@@ -45,7 +45,7 @@ namespace desktop
     //     [OK]
 
     const char aCmdLineHelp_version[] =
-        "%PRODUCTNAME %PRODUCTVERSION %PRODUCTEXTENSION\n"\
+        "%PRODUCTNAME %PRODUCTVERSION%PRODUCTEXTENSION\n"\
         "\n";
     const char aCmdLineHelp_head[] =
         "Usage: %CMDNAME [options] [documents...]\n"\
diff --git a/framework/source/fwe/helper/titlehelper.cxx b/framework/source/fwe/helper/titlehelper.cxx
index ff64742..ec2ae43 100644
--- a/framework/source/fwe/helper/titlehelper.cxx
+++ b/framework/source/fwe/helper/titlehelper.cxx
@@ -490,7 +490,6 @@ void TitleHelper::impl_updateTitleForFrame (const css::uno::Reference< css::fram
     impl_appendComponentTitle   (sTitle, xComponent);
     impl_appendProductName      (sTitle);
     impl_appendModuleName       (sTitle);
-    impl_appendProductExtension (sTitle);
     impl_appendDebugVersion     (sTitle);
 
     // SYNCHRONIZED ->
@@ -531,17 +530,6 @@ void TitleHelper::impl_appendProductName (::rtl::OUStringBuffer& sTitle)
 }
 
 //*****************************************************************************************************************
-void TitleHelper::impl_appendProductExtension (::rtl::OUStringBuffer& sTitle)
-{
-    rtl::OUString ext(utl::ConfigManager::getProductExtension());
-    if (!ext.isEmpty())
-    {
-        sTitle.append(' ');
-        sTitle.append(ext);
-    }
-}
-
-//*****************************************************************************************************************
 void TitleHelper::impl_appendModuleName (::rtl::OUStringBuffer& sTitle)
 {
     // SYNCHRONIZED ->
@@ -578,6 +566,9 @@ void TitleHelper::impl_appendModuleName (::rtl::OUStringBuffer& sTitle)
 #ifdef DBG_UTIL
 void TitleHelper::impl_appendDebugVersion (::rtl::OUStringBuffer& sTitle)
 {
+    rtl::OUString version(utl::ConfigManager::getProductVersion());
+    sTitle.append(' ');
+    sTitle.append(version);
     ::rtl::OUString sDefault(RTL_CONSTASCII_USTRINGPARAM("development"));
     ::rtl::OUString sVersion = ::utl::Bootstrap::getBuildIdData(sDefault);
     sTitle.appendAscii(RTL_CONSTASCII_STRINGPARAM(" ["));
diff --git a/sfx2/source/bastyp/bastyp.src b/sfx2/source/bastyp/bastyp.src
index 1d31cc8..6ade628 100644
--- a/sfx2/source/bastyp/bastyp.src
+++ b/sfx2/source/bastyp/bastyp.src
@@ -19,5 +19,5 @@
 
 String STR_HTML_GENERATOR
 {
-    Text = "%PRODUCTNAME %PRODUCTVERSION %PRODUCTEXTENSION (%1)" ;
+    Text = "%PRODUCTNAME %PRODUCTVERSION%PRODUCTEXTENSION (%1)" ;
 };
diff --git a/svx/source/dialog/linkwarn.src b/svx/source/dialog/linkwarn.src
index 56e0538..dd8eb54 100644
--- a/svx/source/dialog/linkwarn.src
+++ b/svx/source/dialog/linkwarn.src
@@ -28,7 +28,7 @@ ModalDialog RID_SVXDLG_LINK_WARNING
     Moveable = TRUE;
     SVLook = TRUE;
 
-    Text = "%PRODUCTNAME %PRODUCTVERSION %PRODUCTEXTENSION";
+    Text = "%PRODUCTNAME %PRODUCTVERSION%PRODUCTEXTENSION";
 
     FixedImage FI_QUERY
     {
diff --git a/svx/source/src/app.src b/svx/source/src/app.src
index 6591eb1..3b61482 100644
--- a/svx/source/src/app.src
+++ b/svx/source/src/app.src
@@ -22,7 +22,7 @@
  //----------------------------------------------------------------------------
 String RID_APPTITLE
 {
-    Text = "%PRODUCTNAME %PRODUCTVERSION %PRODUCTEXTENSION" ;
+    Text = "%PRODUCTNAME %PRODUCTVERSION%PRODUCTEXTENSION" ;
 };
 
 #define MASKCOLOR       MaskColor = Color { Red = 0xFFFF; Green = 0x0000; Blue = 0xFFFF; };
diff --git a/unotools/source/config/docinfohelper.cxx b/unotools/source/config/docinfohelper.cxx
index e2b0e83..91c9569 100644
--- a/unotools/source/config/docinfohelper.cxx
+++ b/unotools/source/config/docinfohelper.cxx
@@ -50,7 +50,6 @@ namespace utl
             aValue = utl::ConfigManager::getProductExtension();
             if ( !aValue.isEmpty() )
             {
-                aResult.append( (sal_Unicode)'_' );
                 aResult.append( aValue.replace( ' ', '_' ) );
             }
         }
commit e024a8d88dbca3a2d178ad88c069721a92156ddf
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 19:20:42 2013 +0100

    installer: remove SHORT_PRODUCTEXTENSION
    
    Currently PRODUCTEXTENSION does not have a value, which is unfortunate
    because some places such as the soffice --help output and
    utl::DocInfoHelper::GetGeneratorString() which creates the
    meta:generator for ODF files (via Setup.xcu Product/ooSetupExtension)
    write an incomplete version number.
    
    Since there doesn't appear to be a point in having 2 variables here,
    remove SHORT_ one and use PRODUCTEXTENSION consistently.
    
    Change-Id: I5aac25bcedd785a098cba612643ea68fe19c77f0

diff --git a/instsetoo_native/util/openoffice.lst.in b/instsetoo_native/util/openoffice.lst.in
index a6c7912..86d92f8 100644
--- a/instsetoo_native/util/openoffice.lst.in
+++ b/instsetoo_native/util/openoffice.lst.in
@@ -43,8 +43,7 @@ LibreOffice
         {
             PRODUCTNAME LibreOffice
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             POSTVERSIONEXTENSION
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
             USERDIRPRODUCTVERSION @LIBO_VERSION_MAJOR@
@@ -93,8 +92,7 @@ LibreOffice_Dev
         {
             PRODUCTNAME LOdev
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             UNIXBASISROOTNAME lodev at LIBO_VERSION_MAJOR@. at LIBO_VERSION_MINOR@
             POSTVERSIONEXTENSION
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
@@ -151,8 +149,7 @@ LibreOffice_SDK
         {
             PRODUCTNAME LibreOffice
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             POSTVERSIONEXTENSION SDK
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
             PACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR at .@LIBO_VERSION_MICRO at .@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
@@ -190,8 +187,7 @@ LibreOffice_Dev_SDK
         {
             PRODUCTNAME LOdev
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             UNIXBASISROOTNAME lodev at LIBO_VERSION_MAJOR@. at LIBO_VERSION_MINOR@
             POSTVERSIONEXTENSION SDK
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
@@ -235,8 +231,7 @@ LibreOffice_Test
         {
             PRODUCTNAME LibreOffice
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             POSTVERSIONEXTENSION TEST
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
             PACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR at .@LIBO_VERSION_MICRO at .@LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
@@ -274,8 +269,7 @@ LibreOffice_Dev_Test
         {
             PRODUCTNAME LOdev
             PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            PRODUCTEXTENSION
-            SHORT_PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
+            PRODUCTEXTENSION . at LIBO_VERSION_MICRO@. at LIBO_VERSION_PATCH@@LIBO_VERSION_SUFFIX@
             UNIXBASISROOTNAME lodev at LIBO_VERSION_MAJOR@. at LIBO_VERSION_MINOR@
             POSTVERSIONEXTENSION TEST
             BRANDPACKAGEVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm
index 21bd62f..6d370ae 100644
--- a/solenv/bin/modules/installer/download.pm
+++ b/solenv/bin/modules/installer/download.pm
@@ -345,7 +345,7 @@ sub get_download_version
     my $version = "";
 
     $version = $allvariables->{'PRODUCTVERSION'};
-    if (( $allvariables->{'SHORT_PRODUCTEXTENSION'} ) && ( $allvariables->{'SHORT_PRODUCTEXTENSION'} ne "" )) { $version = $version . $allvariables->{'SHORT_PRODUCTEXTENSION'}; }
+    if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} ne "" )) { $version = $version . $allvariables->{'PRODUCTEXTENSION'}; }
 
     return $version;
 }
@@ -586,7 +586,7 @@ sub resolve_variables_in_downloadname
     $downloadname =~ s/\{packageversion\}/$packageversion/;
 
     my $extension = "";
-    if ( $allvariables->{'SHORT_PRODUCTEXTENSION'} ) { $extension = $allvariables->{'SHORT_PRODUCTEXTENSION'}; }
+    if ( $allvariables->{'PRODUCTEXTENSION'} ) { $extension = $allvariables->{'PRODUCTEXTENSION'}; }
     $extension = lc($extension);
     $downloadname =~ s/\{extension\}/$extension/;
 
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index aa15ba0..06b9dd9 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -843,9 +843,9 @@ sub add_variables_to_allvariableshashref
     my $lcvariable = lc($variableshashref->{'PRODUCTNAME'});
     $variableshashref->{'LCPRODUCTNAME'} = $lcvariable;
 
-    if ($variableshashref->{'SHORT_PRODUCTEXTENSION'})
+    if ($variableshashref->{'PRODUCTEXTENSION'})
     {
-        $variableshashref->{'LCPRODUCTEXTENSION'} = "\-" . lc($variableshashref->{'SHORT_PRODUCTEXTENSION'}); # including the "-" !
+        $variableshashref->{'LCPRODUCTEXTENSION'} = "\-" . lc($variableshashref->{'PRODUCTEXTENSION'}); # including the "-" !
     }
     else
     {
commit 9a5183ddad4d361c406823fb56bb68b27e43063e
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 19:16:19 2013 +0100

    installer: remove SERVICETAG remnants of product registration
    
    Change-Id: Ic87bb4666bcc4b28476dbfe2193a8330413547cf

diff --git a/instsetoo_native/util/openoffice.lst.in b/instsetoo_native/util/openoffice.lst.in
index 79113e4..a6c7912 100644
--- a/instsetoo_native/util/openoffice.lst.in
+++ b/instsetoo_native/util/openoffice.lst.in
@@ -8,11 +8,6 @@ Globals
             URELAYERVERSION 1
             REFERENCEOOOMAJORMINOR 3.4
             UNIXBASISROOTNAME libreoffice at LIBO_VERSION_MAJOR@. at LIBO_VERSION_MINOR@
-            SERVICETAG_PRODUCTNAME LibreOffice @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            SERVICETAG_PRODUCTVERSION @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            SERVICETAG_PARENTNAME LibreOffice @LIBO_VERSION_MAJOR at .@LIBO_VERSION_MINOR@
-            SERVICETAG_SOURCE {buildsource}{minor}(Build:{buildid})
-            SERVICETAG_URN urn:uuid:0187debd-e458-11de-82d6-080020a9ed93
             HIDELICENSEDIALOG 1
             PACKAGEPREFIX
             BASISPACKAGEPREFIX libobasis
@@ -112,7 +107,6 @@ LibreOffice_Dev
             UREPACKAGEPREFIX lodev
             SOLSUREPACKAGEPREFIX lodev
             REGISTRYLAYERNAME LayerDev
-            SERVICETAG_URN urn:uuid:1680b00d-e45c-11de-82d6-080020a9ed93
             UPDATEURL http://update.libreoffice.org/check.php
             ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk
             ADDSYSTEMINTEGRATION 1
diff --git a/solenv/bin/modules/installer.pm b/solenv/bin/modules/installer.pm
index 4df3bc7..91b3ef0 100644
--- a/solenv/bin/modules/installer.pm
+++ b/solenv/bin/modules/installer.pm
@@ -280,9 +280,6 @@ sub run {
 
     installer::setupscript::add_installationobject_to_variables($allvariableshashref, $allscriptvariablesref);
 
-    # Adding also all variables, that must be included into the $allvariableshashref.
-    installer::setupscript::add_forced_properties($allvariableshashref);
-
     # Replacing preset properties, not using the default mechanisms (for example for UNIXPRODUCTNAME)
     installer::setupscript::replace_preset_properties($allvariableshashref);
 
diff --git a/solenv/bin/modules/installer/setupscript.pm b/solenv/bin/modules/installer/setupscript.pm
index 53590d3..08d20cf 100644
--- a/solenv/bin/modules/installer/setupscript.pm
+++ b/solenv/bin/modules/installer/setupscript.pm
@@ -37,7 +37,6 @@ use installer::scriptitems;
 use installer::ziplist;
 
 our @EXPORT_OK = qw(
-    add_forced_properties
     add_installationobject_to_variables
     add_lowercase_productname_setupscriptvariable
     add_predefined_folder
@@ -463,30 +462,6 @@ sub add_installationobject_to_variables
 }
 
 #####################################################################################
-# Adding all variables, that must be defined, but are not defined until now.
-#####################################################################################
-
-sub add_forced_properties
-{
-    my ($allvariables) = @_;
-
-    my @forced_properties = qw(
-        SERVICETAG_PRODUCTNAME
-        SERVICETAG_PRODUCTVERSION
-        SERVICETAG_PARENTNAME
-        SERVICETAG_SOURCE
-        SERVICETAG_URN
-    );
-
-    for my $property (@forced_properties)
-    {
-        if ( ! exists($allvariables->{$property}) ) {
-            $allvariables->{$property} = "";
-        }
-    }
-}
-
-#####################################################################################
 # Some properties are created automatically. It should be possible to
 # overwrite them, with PRESET properties. For example UNIXPRODUCTNAME
 # with PRESETUNIXPRODUCTNAME, if this is defined and the automatic process
diff --git a/solenv/bin/modules/t/installer-setupscript.t b/solenv/bin/modules/t/installer-setupscript.t
index 1320d7f..2079efe 100644
--- a/solenv/bin/modules/t/installer-setupscript.t
+++ b/solenv/bin/modules/t/installer-setupscript.t
@@ -32,7 +32,6 @@ use lib '.';
 
 BEGIN {
     use_ok('installer::setupscript', qw(
-        add_forced_properties
         add_installationobject_to_variables
         add_lowercase_productname_setupscriptvariable
         add_predefined_folder
commit 2a9ecb89d40373286da00386a874098c857847c1
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 22:11:53 2013 +0100

    Makefile.in: rebuild configure on .in file changes
    
    Change-Id: I9359cca02f6c48efb50ce446d32695d14a0c81fa

diff --git a/Makefile.in b/Makefile.in
index a383ecd..c28ca6b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -31,6 +31,8 @@ Makefile: $(BUILDDIR)/config_host.mk force-restart
 $(BUILDDIR)/config_host.mk : \
 		$(SRCDIR)/config_host.mk.in \
 		$(SRCDIR)/Makefile.in \
+		$(SRCDIR)/solenv/inc/minor.mk.in \
+		$(SRCDIR)/instsetoo_native/util/openoffice.lst.in \
 		$(SRCDIR)/configure.ac \
 		$(BUILDDIR)/autogen.lastrun
 	$(SRCDIR)/autogen.sh
commit bea63709d05514555d5283279cd66439f4ceed73
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 23:40:13 2013 +0100

    xmloff: refactor Generator version handling:
    
    Since there are now 2 forks of OpenOffice.org, we cannot rely on a
    simple total ordering of versions any more; add a new function
    SvXMLImport::isGeneratorVersionOlderThan(), taking 2 reference versions.
    
    Also extract the LibreOffice version number from the generator string,
    and extend the BuildId property to store this as a third number.
    
    This also allows removal of the "fake LibreOffice3 as OpenOffice.org
    3.3 release" hack, which is not future-proof.
    
    Change-Id: I44d8105eb537ac43fb9529a8b1b661ae0f2bba30

diff --git a/xmloff/inc/xmloff/xmlimp.hxx b/xmloff/inc/xmloff/xmlimp.hxx
index 4fac737..d97fe84 100644
--- a/xmloff/inc/xmloff/xmlimp.hxx
+++ b/xmloff/inc/xmloff/xmlimp.hxx
@@ -423,8 +423,16 @@ public:
     static const sal_uInt16 OOo_32x = 32;
     static const sal_uInt16 OOo_33x = 33;
     static const sal_uInt16 OOo_34x = 34;
+    static const sal_uInt16 LO_flag = 0x100;
+    static const sal_uInt16 LO_3x = 30 | LO_flag;
+    static const sal_uInt16 LO_4x = 40 | LO_flag;
     static const sal_uInt16 ProductVersionUnknown = SAL_MAX_UINT16;
 
+    /** depending on whether the generator version indicates LO, compare
+        against either the given LO or given OOo version */
+    bool isGeneratorVersionOlderThan(
+            sal_uInt16 const nOOoVersion, sal_uInt16 const nLOVersion);
+
     /** this checks the build ID and returns
 
         * OOo_1x for files created with OpenOffice.org 1.x or StarOffice 7 (this also includes binary import over binfilter)
diff --git a/xmloff/source/core/xmlimp.cxx b/xmloff/source/core/xmlimp.cxx
index 3cdd319..6b492ef 100644
--- a/xmloff/source/core/xmlimp.cxx
+++ b/xmloff/source/core/xmlimp.cxx
@@ -157,6 +157,31 @@ void SAL_CALL SvXMLImportEventListener::disposing( const lang::EventObject& )
 
 namespace
 {
+
+static OUString
+getBuildIdsProperty(uno::Reference<beans::XPropertySet> const& xImportInfo)
+{
+    if (xImportInfo.is())
+    {
+        try
+        {
+            Reference< XPropertySetInfo > const xSetInfo(
+                    xImportInfo->getPropertySetInfo());
+            if (xSetInfo.is() && xSetInfo->hasPropertyByName("BuildId"))
+            {
+                OUString aBuildId;
+                xImportInfo->getPropertyValue("BuildId") >>= aBuildId;
+                return aBuildId;
+            }
+        }
+        catch (Exception const& e)
+        {
+            SAL_WARN("xmloff", "exception getting BuildId" << e.Message);
+        }
+    }
+    return OUString();
+}
+
     class DocumentInfo
     {
         private:
@@ -166,6 +191,30 @@ namespace
             DocumentInfo( const SvXMLImport& rImport )
                 : mnGeneratorVersion( SvXMLImport::ProductVersionUnknown )
             {
+                OUString const buildIds(
+                        getBuildIdsProperty(rImport.getImportInfo()));
+                if (!buildIds.isEmpty())
+                {
+                    sal_Int32 const ix = buildIds.indexOf(';');
+                    if (-1 != ix)
+                    {
+                        OUString const loVersion(buildIds.copy(ix + 1));
+                        if (!loVersion.isEmpty())
+                        {
+                            if ('3' == loVersion[0])
+                            {
+                                mnGeneratorVersion = SvXMLImport::LO_3x;
+                            }
+                            else
+                            {
+                                SAL_INFO_IF('4' != loVersion[0], "xmloff",
+                                        "unknown LO version: " << loVersion);
+                                mnGeneratorVersion = SvXMLImport::LO_4x;
+                            }
+                            return; // ignore buildIds
+                        }
+                    }
+                }
                 sal_Int32 nUPD, nBuild;
                 if ( rImport.getBuildIds( nUPD, nBuild ) )
                 {
@@ -1769,29 +1818,20 @@ void SvXMLImport::initXForms()
 bool SvXMLImport::getBuildIds( sal_Int32& rUPD, sal_Int32& rBuild ) const
 {
     bool bRet = false;
-    if( mxImportInfo.is() ) try
+    OUString const aBuildId(getBuildIdsProperty(mxImportInfo));
+    if (!aBuildId.isEmpty())
     {
-        const OUString aPropName( "BuildId" );
-        Reference< XPropertySetInfo > xSetInfo( mxImportInfo->getPropertySetInfo() );
-        if( xSetInfo.is() && xSetInfo->hasPropertyByName( aPropName ) )
+        sal_Int32 nIndex = aBuildId.indexOf('$');
+        if (nIndex != -1)
         {
-            OUString aBuildId;
-            mxImportInfo->getPropertyValue( aPropName ) >>= aBuildId;
-            if( !aBuildId.isEmpty() )
-            {
-                sal_Int32 nIndex = aBuildId.indexOf('$');
-                if( nIndex != -1 )
-                {
-                    rUPD = aBuildId.copy( 0, nIndex ).toInt32();
-                    rBuild = aBuildId.copy( nIndex+1 ).toInt32();
-                    bRet = true;
-                }
-            }
+            rUPD = aBuildId.copy( 0, nIndex ).toInt32();
+            sal_Int32 nIndexEnd = aBuildId.indexOf(';', nIndex);
+            rBuild = (nIndexEnd == -1)
+                ? aBuildId.copy(nIndex + 1).toInt32()
+                : aBuildId.copy(nIndex + 1, nIndexEnd - nIndex - 1).toInt32();
+            bRet = true;
         }
     }
-    catch( Exception& )
-    {
-    }
     return bRet;
 }
 
@@ -1802,6 +1842,17 @@ sal_uInt16 SvXMLImport::getGeneratorVersion() const
     // <--
 }
 
+bool SvXMLImport::isGeneratorVersionOlderThan(
+        sal_uInt16 const nOOoVersion, sal_uInt16 const nLOVersion)
+{
+    assert( (nLOVersion  & LO_flag));
+    assert(!(nOOoVersion & LO_flag));
+    const sal_uInt16 nGeneratorVersion(getGeneratorVersion());
+    return (nGeneratorVersion & LO_flag)
+        ?   nGeneratorVersion < nLOVersion
+        :   nGeneratorVersion < nOOoVersion;
+}
+
 bool SvXMLImport::isGraphicLoadOnDemandSupported() const
 {
     return mbIsGraphicLoadOnDemandSupported;
diff --git a/xmloff/source/draw/ximpshap.cxx b/xmloff/source/draw/ximpshap.cxx
index 3143910..08d8decf 100644
--- a/xmloff/source/draw/ximpshap.cxx
+++ b/xmloff/source/draw/ximpshap.cxx
@@ -2696,10 +2696,8 @@ void SdXMLObjectShapeContext::StartElement( const ::com::sun::star::uno::Referen
 
 void SdXMLObjectShapeContext::EndElement()
 {
-    // #i67705#
-    const sal_uInt16 nGeneratorVersion(GetImport().getGeneratorVersion());
-
-    if(nGeneratorVersion < SvXMLImport::OOo_34x)
+    if (GetImport().isGeneratorVersionOlderThan(
+                SvXMLImport::OOo_34x, SvXMLImport::LO_4x))
     {
         // #i118485#
         // If it's an old file from us written before OOo3.4, we need to correct
diff --git a/xmloff/source/meta/xmlmetai.cxx b/xmloff/source/meta/xmlmetai.cxx
index ba9c58b..af3362f 100644
--- a/xmloff/source/meta/xmlmetai.cxx
+++ b/xmloff/source/meta/xmlmetai.cxx
@@ -279,17 +279,27 @@ void SvXMLMetaDocumentContext::setBuildId(::rtl::OUString const& i_rBuildId, con
             sBuildId = OUString("680$9134"); // fake NeoOffice as OpenOffice.org 2.2 release
         }
     }
-// Is this really what we want / correct ?
-#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
-    else
+
+    if (i_rBuildId.startsWith("LibreOffice/"))
     {
-        if (i_rBuildId.startsWith("LibreOffice/3"))
+        OUStringBuffer sNumber;
+        for (sal_Int32 i = sizeof("LibreOffice/") - 1;
+                i < i_rBuildId.getLength(); ++i)
+        {
+            if (isdigit(i_rBuildId[i]))
+            {
+                sNumber.append(i_rBuildId[i]);
+            }
+            else if ('.' != i_rBuildId[i])
+            {
+                break;
+            }
+        }
+        if (sNumber.getLength())
         {
-            // #118558# fake LibreOffice3 as OpenOffice.org 3.3 release
-            sBuildId = OUString::createFromAscii( "330$9567" );
+            sBuildId += (";" + sNumber.makeStringAndClear());
         }
     }
-#endif
 
     if ( !sBuildId.isEmpty() ) try
     {
commit 0669d78ea76ab9bfeff27ea02d785973f3720d6b
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Jan 18 17:47:20 2013 +0100

    fdo#59517: fix detection of ancient OOo ODF generator strings:
    
    SvXMLMetaDocumentContext::setBuildId: check only the prefix of the
    generator string, not all of it.
    
    (regression from 17ff7b41d15ab9928e2e2706faa26234a09802cd)
    
    Change-Id: I0cdd958d67cd13fd2368cc6958893ce3528a9e94

diff --git a/xmloff/source/meta/xmlmetai.cxx b/xmloff/source/meta/xmlmetai.cxx
index 651d6a5..ba9c58b 100644
--- a/xmloff/source/meta/xmlmetai.cxx
+++ b/xmloff/source/meta/xmlmetai.cxx
@@ -268,12 +268,13 @@ void SvXMLMetaDocumentContext::setBuildId(::rtl::OUString const& i_rBuildId, con
 
     if ( sBuildId.isEmpty() )
     {
-        if ( i_rBuildId == "StarOffice 7" || i_rBuildId == "StarSuite 7" ||
-             i_rBuildId == "OpenOffice.org 1" )
+        if (    i_rBuildId.startsWith("StarOffice 7")
+            ||  i_rBuildId.startsWith("StarSuite 7")
+            ||  i_rBuildId.startsWith("OpenOffice.org 1"))
         {
             sBuildId = OUString("645$8687");
         }
-        else if ( i_rBuildId == "NeoOffice/2" )
+        else if (i_rBuildId.startsWith("NeoOffice/2"))
         {
             sBuildId = OUString("680$9134"); // fake NeoOffice as OpenOffice.org 2.2 release
         }
@@ -282,7 +283,7 @@ void SvXMLMetaDocumentContext::setBuildId(::rtl::OUString const& i_rBuildId, con
 #ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
     else
     {
-        if ( i_rBuildId == "LibreOffice/3" )
+        if (i_rBuildId.startsWith("LibreOffice/3"))
         {
             // #118558# fake LibreOffice3 as OpenOffice.org 3.3 release
             sBuildId = OUString::createFromAscii( "330$9567" );


More information about the Libreoffice-commits mailing list