[Libreoffice-commits] core.git: Branch 'aoo/trunk' - 14 commits - instsetoo_native/util odk/util oox/source solenv/bin svgio/source svx/inc svx/source sw/inc sw/source xmloff/source

Andre Fischer af at apache.org
Tue Nov 5 15:41:26 CET 2013


 instsetoo_native/util/openoffice.lst                     |   48 -
 odk/util/makefile.pmk                                    |    2 
 oox/source/core/xmlfilterbase.cxx                        |    3 
 oox/source/token/namespaces.txt                          |    1 
 oox/source/token/tokens.txt                              |    3 
 solenv/bin/make_installer.pl                             |  208 +++----
 solenv/bin/modules/installer/archivefiles.pm             |  152 ++---
 solenv/bin/modules/installer/configuration.pm            |   12 
 solenv/bin/modules/installer/control.pm                  |  296 +++++-----
 solenv/bin/modules/installer/download.pm                 |  207 ++-----
 solenv/bin/modules/installer/downloadsigner.pm           |  102 +--
 solenv/bin/modules/installer/environment.pm              |    6 
 solenv/bin/modules/installer/epmfile.pm                  |  393 +++++--------
 solenv/bin/modules/installer/exiter.pm                   |   38 -
 solenv/bin/modules/installer/files.pm                    |    4 
 solenv/bin/modules/installer/followme.pm                 |    5 
 solenv/bin/modules/installer/globals.pm                  |   10 
 solenv/bin/modules/installer/javainstaller.pm            |  127 ++--
 solenv/bin/modules/installer/languagepack.pm             |   42 -
 solenv/bin/modules/installer/logger.pm                   |  438 +++++++++++++--
 solenv/bin/modules/installer/packagelist.pm              |   53 -
 solenv/bin/modules/installer/packagepool.pm              |  176 +++---
 solenv/bin/modules/installer/parameter.pm                |   35 -
 solenv/bin/modules/installer/profiles.pm                 |    6 
 solenv/bin/modules/installer/scppatchsoname.pm           |   10 
 solenv/bin/modules/installer/scpzipfiles.pm              |    3 
 solenv/bin/modules/installer/scriptitems.pm              |  256 ++++----
 solenv/bin/modules/installer/setupscript.pm              |   12 
 solenv/bin/modules/installer/simplepackage.pm            |   78 +-
 solenv/bin/modules/installer/strip.pm                    |    8 
 solenv/bin/modules/installer/substfilenamefiles.pm       |    3 
 solenv/bin/modules/installer/systemactions.pm            |  268 +++++----
 solenv/bin/modules/installer/upx.pm                      |   18 
 solenv/bin/modules/installer/windows/admin.pm            |   46 -
 solenv/bin/modules/installer/windows/assembly.pm         |   12 
 solenv/bin/modules/installer/windows/binary.pm           |    3 
 solenv/bin/modules/installer/windows/component.pm        |   14 
 solenv/bin/modules/installer/windows/createfolder.pm     |    6 
 solenv/bin/modules/installer/windows/directory.pm        |    8 
 solenv/bin/modules/installer/windows/feature.pm          |    9 
 solenv/bin/modules/installer/windows/featurecomponent.pm |   16 
 solenv/bin/modules/installer/windows/file.pm             |   46 -
 solenv/bin/modules/installer/windows/font.pm             |    6 
 solenv/bin/modules/installer/windows/icon.pm             |    4 
 solenv/bin/modules/installer/windows/idtglobal.pm        |   87 +-
 solenv/bin/modules/installer/windows/inifile.pm          |    4 
 solenv/bin/modules/installer/windows/java.pm             |    6 
 solenv/bin/modules/installer/windows/media.pm            |    8 
 solenv/bin/modules/installer/windows/mergemodule.pm      |  152 ++---
 solenv/bin/modules/installer/windows/msiglobal.pm        |  172 +++--
 solenv/bin/modules/installer/windows/msp.pm              |   91 +--
 solenv/bin/modules/installer/windows/patch.pm            |   10 
 solenv/bin/modules/installer/windows/property.pm         |   14 
 solenv/bin/modules/installer/windows/registry.pm         |    6 
 solenv/bin/modules/installer/windows/removefile.pm       |    6 
 solenv/bin/modules/installer/windows/selfreg.pm          |    5 
 solenv/bin/modules/installer/windows/shortcut.pm         |    9 
 solenv/bin/modules/installer/windows/sign.pm             |   92 +--
 solenv/bin/modules/installer/windows/strip.pm            |   12 
 solenv/bin/modules/installer/windows/update.pm           |   35 -
 solenv/bin/modules/installer/windows/upgrade.pm          |    6 
 solenv/bin/modules/installer/worker.pm                   |  238 ++++----
 solenv/bin/modules/installer/xpdinstaller.pm             |   52 -
 solenv/bin/modules/installer/ziplist.pm                  |   10 
 svgio/source/svgreader/svgnode.cxx                       |   23 
 svx/inc/svx/sdr/properties/customshapeproperties.hxx     |    3 
 svx/source/sdr/properties/customshapeproperties.cxx      |   36 -
 sw/inc/ndgrf.hxx                                         |    1 
 sw/source/core/doc/notxtfrm.cxx                          |  156 +----
 sw/source/filter/rtf/swparrtf.cxx                        |    9 
 xmloff/source/draw/shapeexport2.cxx                      |   69 +-
 xmloff/source/draw/shapeexport3.cxx                      |   16 
 72 files changed, 2373 insertions(+), 2148 deletions(-)

New commits:
commit af5fd1e2966d1b45f8565ca694c38ee44706e44c
Author: Andre Fischer <af at apache.org>
Date:   Mon Nov 4 08:46:39 2013 +0000

    123595: Add temporary debug code to find who prints '%{'.

diff --git a/solenv/bin/modules/installer/logger.pm b/solenv/bin/modules/installer/logger.pm
index b6659c2..6145ce0 100644
--- a/solenv/bin/modules/installer/logger.pm
+++ b/solenv/bin/modules/installer/logger.pm
@@ -144,11 +144,12 @@ sub printf ($$@)
 {
     my ($self, $format, @arguments) = @_;
 
-    my $message = sprintf($format, @arguments);
-    if ($message =~ /\%/)
+    if ($format =~ /\%\{/)
     {
+        printf(">%s<\n", $format);
         PrintStackTrace();
     }
+    my $message = sprintf($format, @arguments);
     $self->print($message, 0);
 }
 
@@ -659,6 +660,7 @@ sub PrintStackTrace ()
     }
 }
 
+
 sub Die ($)
 {
     my ($message) = @_;
commit 5e251e4f8640c7e3f14dff426ae075ae58825003
Author: Jürgen Schmidt <jsc at apache.org>
Date:   Fri Nov 1 16:18:51 2013 +0000

    increase version number (4.1.0) to differentiate trunk from the released 4.0.1 version

diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst
index fcee3e1..82ac49b 100644
--- a/instsetoo_native/util/openoffice.lst
+++ b/instsetoo_native/util/openoffice.lst
@@ -5,9 +5,9 @@ Globals
         variables
         {
             APACHEPROJECTNAME Apache OpenOffice
-            OOOBASEVERSION 4.0
-            OOOPACKAGEVERSION 4.0.0
-            UREPACKAGEVERSION 4.0.0
+            OOOBASEVERSION 4.1
+            OOOPACKAGEVERSION 4.1.0
+            UREPACKAGEVERSION 4.1.0
             URELAYERVERSION 1
             BASISROOTNAME OpenOffice
             UNIXBASISROOTNAME openoffice
@@ -41,9 +41,9 @@ Globals
             OOOXMLFILEFORMATNAME OpenOffice.org XML
             OOOXMLFILEFORMATVERSION 1.0
             WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1
-            SERVICETAG_PRODUCTNAME Apache OpenOffice 4.0
-            SERVICETAG_PRODUCTVERSION 4.0
-            SERVICETAG_PARENTNAME Apache OpenOffice 4.0
+            SERVICETAG_PRODUCTNAME Apache OpenOffice 4.1
+            SERVICETAG_PRODUCTVERSION 4.1
+            SERVICETAG_PARENTNAME Apache OpenOffice 4.1
             SERVICETAG_SOURCE {buildsource}{minor}(Build:{buildid})
             SERVICETAG_URN urn:uuid:500061aa-5666-11e0-8e00-080020a9ed93
             REGISTRATION_HOST https://registration.openoffice.org
@@ -61,7 +61,7 @@ Apache_OpenOffice
         {
             FULLPRODUCTNAME Apache OpenOffice
             PRODUCTNAME OpenOffice
-            PRODUCTVERSION 4.0.0
+            PRODUCTVERSION 4.1.0
             PRODUCTEXTENSION 
             LONG_PRODUCTEXTENSION 
             SHORT_PRODUCTEXTENSION 
@@ -69,15 +69,15 @@ Apache_OpenOffice
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0
-            BASEPRODUCTVERSION 4.0
+            ABOUTBOXPRODUCTVERSION 4.1.0
+            BASEPRODUCTVERSION 4.1
             PCPFILENAME openoffice.pcp
             UPDATEURL https://ooo-updates.apache.org/aoo410/check.Update
             ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk,userland.txt,version.lst
             REMOVE_UPGRADE_CODE_FILE upgradecode_remove_ooo.txt
             ADDSYSTEMINTEGRATION 1
             EVAL
-            PACKAGEVERSION 4.0.0
+            PACKAGEVERSION 4.1.0
             PACKAGEREVISION {milestone}
             LICENSENAME ALv2
             GLOBALFILEGID gid_File_Lib_Vcl
@@ -121,7 +121,7 @@ Apache_OpenOffice_wJRE
         {
             FULLPRODUCTNAME Apache OpenOffice
             PRODUCTNAME OpenOffice
-            PRODUCTVERSION 4.0.0
+            PRODUCTVERSION 4.1.0
             PRODUCTEXTENSION 
             LONG_PRODUCTEXTENSION 
             SHORT_PRODUCTEXTENSION 
@@ -129,14 +129,14 @@ Apache_OpenOffice_wJRE
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0
-            BASEPRODUCTVERSION 4.0
+            ABOUTBOXPRODUCTVERSION 4.1.0
+            BASEPRODUCTVERSION 4.1
             UPDATEURL https://ooo-updates.apache.org/aoo410/check.Update
             ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk,javaversion2.dat,userland.txt,version.lst
             REMOVE_UPGRADE_CODE_FILE upgradecode_remove_ooo.txt
             ADDSYSTEMINTEGRATION 1
             EVAL
-            PACKAGEVERSION 4.0.0
+            PACKAGEVERSION 4.1.0
             PACKAGEREVISION {milestone}
             LICENSENAME ALv2
             WITHJREPRODUCT 1
@@ -181,7 +181,7 @@ Apache_OpenOffice_Dev
         {
             FULLPRODUCTNAME AOO-Developer-Build
             PRODUCTNAME AOO-Developer-Build
-            PRODUCTVERSION 4.0.0
+            PRODUCTVERSION 4.1.0
             PRODUCTEXTENSION 
             LONG_PRODUCTEXTENSION 
             SHORT_PRODUCTEXTENSION 
@@ -191,8 +191,8 @@ Apache_OpenOffice_Dev
             POSTVERSIONEXTENSIONUNIX
             BRANDPACKAGEVERSION 4
             USERDIRPRODUCTVERSION 4
-            ABOUTBOXPRODUCTVERSION 4.0.0
-            BASEPRODUCTVERSION 4.0
+            ABOUTBOXPRODUCTVERSION 4.1.0
+            BASEPRODUCTVERSION 4.1
             DEVELOPMENTPRODUCT 1
             BASISPACKAGEPREFIX aoodev
             UREPACKAGEPREFIX aoodev
@@ -201,7 +201,7 @@ Apache_OpenOffice_Dev
             UPDATEURL https://ooo-updates.apache.org/aoo410/check.Update
             ADD_INCLUDE_FILES cliureversion.mk,clioootypesversion.mk,javaversion2.dat,userland.txt,version.lst
             EVAL
-            PACKAGEVERSION 4.0.0
+            PACKAGEVERSION 4.1.0
             PACKAGEREVISION {milestone}
             LICENSENAME ALv2
             GLOBALFILEGID gid_File_Lib_Vcl
@@ -250,8 +250,8 @@ URE
         {
             FULLPRODUCTNAME URE
             PRODUCTNAME URE
-            PRODUCTVERSION 4.0.0
-            PACKAGEVERSION 4.0
+            PRODUCTVERSION 4.1.0
+            PACKAGEVERSION 4.1
             PACKAGEREVISION 1
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
@@ -293,14 +293,14 @@ Apache_OpenOffice_SDK
         {
             FULLPRODUCTNAME Apache OpenOffice
             PRODUCTNAME OpenOffice
-            PRODUCTVERSION 4.0.0
+            PRODUCTVERSION 4.1.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
             SHORT_PRODUCTEXTENSION
             POSTVERSIONEXTENSION SDK
             POSTVERSIONEXTENSIONUNIX sdk
             BRANDPACKAGEVERSION 4
-            PACKAGEVERSION 4.0.0
+            PACKAGEVERSION 4.1.0
             PACKAGEREVISION {milestone}
             PACK_INSTALLED 1
             POOLPRODUCT 0
@@ -341,7 +341,7 @@ Apache_OpenOffice_Dev_SDK
         {
             FULLPRODUCTNAME AOO-Developer-Build
             PRODUCTNAME AOO-Developer-Build
-            PRODUCTVERSION 4.0.0
+            PRODUCTVERSION 4.1.0
             PRODUCTEXTENSION
             LONG_PRODUCTEXTENSION
             SHORT_PRODUCTEXTENSION
@@ -350,7 +350,7 @@ Apache_OpenOffice_Dev_SDK
             POSTVERSIONEXTENSION SDK
             POSTVERSIONEXTENSIONUNIX sdk
             BRANDPACKAGEVERSION 4
-            PACKAGEVERSION 4.0.0
+            PACKAGEVERSION 4.1.0
             PACKAGEREVISION {milestone}
             BASISPACKAGEPREFIX aoodev
             UREPACKAGEPREFIX aoodev
diff --git a/odk/util/makefile.pmk b/odk/util/makefile.pmk
index 33174f5..eb1d4c0 100644
--- a/odk/util/makefile.pmk
+++ b/odk/util/makefile.pmk
@@ -22,7 +22,7 @@
 
 
 # used for sdk common files
-PRODUCT_RELEASE=4.0
+PRODUCT_RELEASE=4.1
 OFFICENAME=OpenOffice
 .IF "$(GUI)"=="WNT"
 SDKDIRNAME=OpenOffice_$(PRODUCT_RELEASE)_SDK
commit 3d73c711fbc482fad604ec01094253d17f2609d6
Author: Oliver-Rainer Wittmann <orw at apache.org>
Date:   Fri Nov 1 11:35:02 2013 +0000

    119959: <SwRTFParser::SetAttrInDoc(..)> - reset list attributes, if needed

diff --git a/sw/source/filter/rtf/swparrtf.cxx b/sw/source/filter/rtf/swparrtf.cxx
index 29b7d0f..ae7c826 100644
--- a/sw/source/filter/rtf/swparrtf.cxx
+++ b/sw/source/filter/rtf/swparrtf.cxx
@@ -2290,8 +2290,13 @@ void SwRTFParser::SetAttrInDoc( SvxRTFItemStackType &rSet )
             SwTxtNode* pTxtNd = pDoc->GetNodes()[ n ]->GetTxtNode();
             if( pTxtNd )
             {
-                pTxtNd->SetAttr(
-                    *GetDfltAttr(RES_PARATR_NUMRULE));
+                pTxtNd->SetAttr( *GetDfltAttr(RES_PARATR_NUMRULE) );
+                // reset all list attributes
+                pTxtNd->ResetAttr( RES_PARATR_LIST_LEVEL );
+                pTxtNd->ResetAttr( RES_PARATR_LIST_ISRESTART );
+                pTxtNd->ResetAttr( RES_PARATR_LIST_RESTARTVALUE );
+                pTxtNd->ResetAttr( RES_PARATR_LIST_ISCOUNTED );
+                pTxtNd->ResetAttr( RES_PARATR_LIST_ID );
             }
         }
     }
commit ce8ea19b028c304985958286af18591c68996ccc
Author: Armin Le Grand <alg at apache.org>
Date:   Fri Nov 1 10:26:45 2013 +0000

    i123433 by error removed the export of the created svg:d in ExportConnectorShape
    
    hint by: Stephan Bergmann

diff --git a/xmloff/source/draw/shapeexport2.cxx b/xmloff/source/draw/shapeexport2.cxx
index f9cbfe2..70d3263 100644
--- a/xmloff/source/draw/shapeexport2.cxx
+++ b/xmloff/source/draw/shapeexport2.cxx
@@ -1441,6 +1441,9 @@ void XMLShapeExport::ImpExportConnectorShape(
                     true,           // bUseRelativeCoordinates
                     false,          // bDetectQuadraticBeziers: not used in old, but maybe activated now
                     true));         // bHandleRelativeNextPointCompatible
+
+            // write point array
+            mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_D, aPolygonString);
         }
     }
 
commit a5e093baadd6d016bfb6780c9eea31ab5f7ec171
Author: Andre Fischer <af at apache.org>
Date:   Fri Nov 1 09:54:58 2013 +0000

    123595: Use print instead of printf when text is to be printed verbatim.

diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index 64ac137..e877595 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -2549,7 +2549,7 @@ sub create_packages_without_epm
             {
                 # if ( $i < $maxrpmcalls ) { $rpmoutput[$j] =~ s/\bERROR\b/PROBLEM/ig; }
                 $rpmoutput[$j] =~ s/\bERROR\b/PROBLEM/ig;
-                $installer::logger::Lang->printf($rpmoutput[$j]);
+                $installer::logger::Lang->print($rpmoutput[$j]);
             }
 
             if ($returnvalue)
@@ -2596,7 +2596,7 @@ sub create_packages_without_epm
 
                 foreach my $line (@helperrpmoutput)
                 {
-                    $installer::logger::Lang->printf($helperrpmoutput[$j]);
+                    $installer::logger::Lang->print($helperrpmoutput[$j]);
                 }
 
                 if ($helperreturnvalue)
commit b80a5d878bf5056e64f6b172562c1c7aff9eba44
Author: Andre Fischer <af at apache.org>
Date:   Fri Nov 1 09:54:00 2013 +0000

    123595: logger::printf now writes stack trace when formatted message still contains %

diff --git a/solenv/bin/modules/installer/logger.pm b/solenv/bin/modules/installer/logger.pm
index 7847b67..b6659c2 100644
--- a/solenv/bin/modules/installer/logger.pm
+++ b/solenv/bin/modules/installer/logger.pm
@@ -32,19 +32,8 @@ use strict;
 
 my $StartTime = undef;
 
-sub Die ($)
-{
-    my ($message) = @_;
-    print "Stack Trace:\n";
-    my $i = 1;
-    while ((my @call_details = (caller($i++))))
-    {
-        printf("%s:%s in function %s\n", $call_details[1], $call_details[2], $call_details[3]);
-    }
-
-    die $message;
-}
-
+sub PrintStackTrace ();
+sub Die ($);
 
 =head1 NAME
 
@@ -155,7 +144,12 @@ sub printf ($$@)
 {
     my ($self, $format, @arguments) = @_;
 
-    $self->print(sprintf($format, @arguments), 0);
+    my $message = sprintf($format, @arguments);
+    if ($message =~ /\%/)
+    {
+        PrintStackTrace();
+    }
+    $self->print($message, 0);
 }
 
 
@@ -650,4 +644,28 @@ sub print_error
     return;
 }
 
+
+=head2 PrintStackTrace()
+    This is for debugging the print and printf methods of the logger class and their use.
+    Therefore we use the Perl print/printf directly and not the logger methods to avoid loops in case of errors.
+=cut
+sub PrintStackTrace ()
+{
+    print "Stack Trace:\n";
+    my $i = 1;
+    while ((my @call_details = (caller($i++))))
+    {
+        printf("%s:%s in function %s\n", $call_details[1], $call_details[2], $call_details[3]);
+    }
+}
+
+sub Die ($)
+{
+    my ($message) = @_;
+    PrintStackTrace();
+    die $message;
+}
+
+
+
 1;
commit ead03cdff0414dd0c121ac834d48b4f9fd7cabfb
Author: Andre Fischer <af at apache.org>
Date:   Fri Nov 1 09:32:50 2013 +0000

    123959: Fixed build breaker due to deprecation of print_message().

diff --git a/solenv/bin/modules/installer/languagepack.pm b/solenv/bin/modules/installer/languagepack.pm
index 2e5bea4..7dbd76c 100644
--- a/solenv/bin/modules/installer/languagepack.pm
+++ b/solenv/bin/modules/installer/languagepack.pm
@@ -162,7 +162,7 @@ sub create_tar_gz_file
     $packagename =~ s/\.rpm\s*$//;
     my $targzname = $packagename . ".tar.gz";
     $systemcall = "cd $installdir; tar -cf - $packagestring | gzip > $targzname";
-    installer::logger::print_message( "... $systemcall ...\n" );
+    $installer::logger::Info->printf("... %s ...\n", $systemcall);
 
     my $returnvalue = system($systemcall);
 
@@ -499,7 +499,7 @@ sub build_installer_for_languagepack
 {
     my ($installdir, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref) = @_;
 
-    installer::logger::print_message( "... creating shell script installer ...\n" );
+    $installer::logger::Info->print("... creating shell script installer ...\n");
 
     installer::logger::include_header_into_logfile("Creating shell script installer:");
 
diff --git a/solenv/bin/modules/installer/logger.pm b/solenv/bin/modules/installer/logger.pm
index d9aaac1..7847b67 100644
--- a/solenv/bin/modules/installer/logger.pm
+++ b/solenv/bin/modules/installer/logger.pm
@@ -32,6 +32,20 @@ use strict;
 
 my $StartTime = undef;
 
+sub Die ($)
+{
+    my ($message) = @_;
+    print "Stack Trace:\n";
+    my $i = 1;
+    while ((my @call_details = (caller($i++))))
+    {
+        printf("%s:%s in function %s\n", $call_details[1], $call_details[2], $call_details[3]);
+    }
+
+    die $message;
+}
+
+
 =head1 NAME
 
     installer::logger
@@ -158,7 +172,7 @@ sub print ($$;$)
 {
     my ($self, $message, $force) = @_;
 
-    die "newline at start of line" if ($message =~ /^\n.+/);
+    Die "newline at start of line" if ($message =~ /^\n.+/);
 
     $force = 0 unless defined $force;
 
@@ -258,7 +272,7 @@ sub set_filename ($$)
         if ($filename ne "")
         {
             open $self->{'file'}, ">", $self->{'filename'}
-            || die "can not open log file ".$self->{'filename'}." for writing";
+            || Die "can not open log file ".$self->{'filename'}." for writing";
             $self->{'is_print_to_console'} = 0;
 
             # Make all writes synchronous so that we don't loose any messages on an
@@ -386,7 +400,7 @@ sub include_header_into_globallogfile
 
 sub include_timestamp_into_logfile
 {
-    die "deprected";
+    Die "deprected";
     my ($message) = @_;
 
     my $infoline;
@@ -591,7 +605,7 @@ sub set_installation_date
 
 sub print_message
 {
-    die "print_message is deprecated";
+    Die "print_message is deprecated";
 
     my $message = shift;
     chomp $message;
diff --git a/solenv/bin/modules/installer/xpdinstaller.pm b/solenv/bin/modules/installer/xpdinstaller.pm
index ee426f0..301878b 100644
--- a/solenv/bin/modules/installer/xpdinstaller.pm
+++ b/solenv/bin/modules/installer/xpdinstaller.pm
@@ -596,7 +596,7 @@ sub get_size_value
         # Evaluating an error, because of rpm problems with removed LD_LIBRARY_PATH
         if ( $error )
         {
-            installer::logger::print_message( "... trying /usr/bin/rpm ...\n" );
+            $installer::logger::Info->print("... trying /usr/bin/rpm ...\n");
             my $systemcall = "/usr/bin/rpm -qp --queryformat \"\[\%\{FILESIZES\}\\n\]\" $packagename 2\>\&1 |";
             ($rpmout, $error) = make_systemcall_allowing_error($systemcall, 0, 0);
             if ( $error ) { installer::exiter::exit_program("ERROR: rpm failed to query package!", "get_size_value"); }
@@ -734,7 +734,7 @@ sub get_fullpkgname_value
         # Evaluating an error, because of rpm problems with removed LD_LIBRARY_PATH
         if ( $error )
         {
-            installer::logger::print_message( "... trying /usr/bin/rpm ...\n" );
+            $installer::logger::Info->print("... trying /usr/bin/rpm ...\n");
             my $systemcall = "/usr/bin/rpm -qp $packagename |";
             ($returnarray, $error) = make_systemcall_allowing_error($systemcall, 0, 0);
             if ( $error ) { installer::exiter::exit_program("ERROR: rpm failed to query package!", "get_fullpkgname_value"); }
@@ -864,7 +864,7 @@ sub make_systemcall
 
     my @returns = ();
 
-    installer::logger::print_message( "... $systemcall ...\n" );
+    $installer::logger::Info->printf("... %s ...\n", $systemcall);
 
     open (REG, "$systemcall");
     while (<REG>) {push(@returns, $_); }
@@ -908,7 +908,7 @@ sub make_systemcall_allowing_error
 
     my @returns = ();
 
-    installer::logger::print_message( "... $systemcall ...\n" );
+    $installer::logger::Info->printf("... %s ...\n", $systemcall);
 
     open (REG, "$systemcall");
     while (<REG>) {push(@returns, $_); }
commit 8f3a7a11fa39b1b0cfd6cfd0d085eaabe53b1fe9
Author: Steve Yin <steve_y at apache.org>
Date:   Fri Nov 1 05:51:39 2013 +0000

    i123528: Only placeholder shown for cropped picture in particular .pptx

diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx
index 0ace8a4..8f7408c 100644
--- a/oox/source/core/xmlfilterbase.cxx
+++ b/oox/source/core/xmlfilterbase.cxx
@@ -19,8 +19,6 @@
  *
  *************************************************************/
 
-
-
 #include "oox/core/xmlfilterbase.hxx"
 
 #include <cstdio>
@@ -120,6 +118,7 @@ XmlFilterBaseImpl::XmlFilterBaseImpl( const Reference< XComponentContext >& rxCo
 
     maFastParser.registerNamespace( NMSP_ax );
     maFastParser.registerNamespace( NMSP_xm );
+    maFastParser.registerNamespace( NMSP_markupCompat );    // i123528
 }
 
 // ============================================================================
diff --git a/oox/source/token/namespaces.txt b/oox/source/token/namespaces.txt
index 6300298..bd45e8f 100644
--- a/oox/source/token/namespaces.txt
+++ b/oox/source/token/namespaces.txt
@@ -70,3 +70,4 @@ dc                      http://purl.org/dc/elements/1.1/
 dcTerms                 http://purl.org/dc/terms/
 xm                      http://schemas.microsoft.com/office/excel/2006/main
 sprm                    http://sprm
+markupCompat            http://schemas.openxmlformats.org/markup-compatibility/2006
diff --git a/oox/source/token/tokens.txt b/oox/source/token/tokens.txt
index 13c1a10..643e661 100644
--- a/oox/source/token/tokens.txt
+++ b/oox/source/token/tokens.txt
@@ -37,6 +37,7 @@ AbbreviatedCaseNumber
 Accel
 Accel2
 AlbumTitle
+AlternateContent
 Always
 Anchor
 AppVersion
@@ -79,6 +80,7 @@ Characters
 CharactersWithSpaces
 Checkbox
 Checked
+Choice
 City
 ClientData
 ColHidden
@@ -2107,6 +2109,7 @@ factor
 fade
 fadeDir
 fallback
+Fallback
 false
 family
 fans
commit f5d69b2b8b002ca6905496a9d9065ef76b5641d7
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Oct 31 14:43:21 2013 +0000

    i123500 unified Graphic processing to use GraphicPrimitive2D

diff --git a/sw/inc/ndgrf.hxx b/sw/inc/ndgrf.hxx
index 7a7958b..f9ee8ac 100644
--- a/sw/inc/ndgrf.hxx
+++ b/sw/inc/ndgrf.hxx
@@ -154,7 +154,6 @@ public:
 
     /// wrappers for non-const calls at GraphicObject
     void ReleaseGraphicFromCache() { maGrfObj.ReleaseFromCache(); }
-    void DrawGraphicWithPDFHandling(OutputDevice& rOutDev, const Point& rPt, const Size& rSz, const GraphicAttr* pGrfAttr = NULL, const sal_uLong nFlags = GRFMGR_DRAW_STANDARD) { maGrfObj.DrawWithPDFHandling(rOutDev, rPt, rSz, pGrfAttr, nFlags); }
     void StartGraphicAnimation(OutputDevice* pOut, const Point& rPt, const Size& rSz, long nExtraData = 0, const GraphicAttr* pAttr = NULL, sal_uLong nFlags = GRFMGR_DRAW_STANDARD, OutputDevice* pFirstFrameOutDev = NULL) { maGrfObj.StartAnimation(pOut, rPt, rSz, nExtraData, pAttr, nFlags, pFirstFrameOutDev); }
     void StopGraphicAnimation(OutputDevice* pOut = NULL, long nExtraData = 0) { maGrfObj.StopAnimation(pOut, nExtraData); }
 
diff --git a/sw/source/core/doc/notxtfrm.cxx b/sw/source/core/doc/notxtfrm.cxx
index c76520f..15f2fc7 100644
--- a/sw/source/core/doc/notxtfrm.cxx
+++ b/sw/source/core/doc/notxtfrm.cxx
@@ -76,7 +76,7 @@
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
 #include <drawinglayer/processor2d/processor2dtools.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/bitmapprimitive2d.hxx>
+#include <drawinglayer/primitive2d/graphicprimitive2d.hxx>
 
 using namespace com::sun::star;
 
@@ -816,57 +816,19 @@ bool paintUsingPrimitivesHelper(
     OutputDevice& rOutputDevice,
     const drawinglayer::primitive2d::Primitive2DSequence& rSequence,
     const basegfx::B2DRange& rSourceRange,
-    const basegfx::B2DRange& rTargetRange,
-    const sal_Int32 nLeftCrop = 0,
-    const sal_Int32 nTopCrop = 0,
-    const sal_Int32 nRightCrop = 0,
-    const sal_Int32 nBottomCrop = 0,
-    const bool bMirrorX = false,
-    const bool bMirrorY = false)
+    const basegfx::B2DRange& rTargetRange)
 {
-    const double fSourceWidth(rSourceRange.getWidth());
-    const double fSourceHeight(rSourceRange.getHeight());
-
-    if(rSequence.hasElements() && !basegfx::fTools::equalZero(fSourceWidth) && !basegfx::fTools::equalZero(fSourceHeight))
+    if(rSequence.hasElements() && !basegfx::fTools::equalZero(rSourceRange.getWidth()) && !basegfx::fTools::equalZero(rSourceRange.getHeight()))
     {
-        // copy target range and apply evtl. cropping
-        basegfx::B2DRange aTargetRange(rTargetRange);
-
-        if(nLeftCrop || nTopCrop || nRightCrop || nBottomCrop)
+        if(!basegfx::fTools::equalZero(rTargetRange.getWidth()) && !basegfx::fTools::equalZero(rTargetRange.getHeight()))
         {
-            // calculate original TargetRange
-            const double fFactor100thmmToTwips(72.0 / 127.0);
-
-            aTargetRange = basegfx::B2DRange(
-                aTargetRange.getMinX() - (nLeftCrop * fFactor100thmmToTwips),
-                aTargetRange.getMinY() - (nTopCrop * fFactor100thmmToTwips),
-                aTargetRange.getMaxX() + (nRightCrop * fFactor100thmmToTwips),
-                aTargetRange.getMaxY() + (nBottomCrop * fFactor100thmmToTwips));
-        }
-
-        const double fTargetWidth(aTargetRange.getWidth());
-        const double fTargetHeight(aTargetRange.getHeight());
-
-        if(!basegfx::fTools::equalZero(fTargetWidth) && !basegfx::fTools::equalZero(fTargetHeight))
-        {
-            // map graphic range to target range. This will automatically include
-            // tme mapping from Svg 1/100th mm content to twips since the target
-            // range is twips already
-            basegfx::B2DHomMatrix aMappingTransform(
-                basegfx::tools::createTranslateB2DHomMatrix(
-                    -rSourceRange.getMinX(),
-                    -rSourceRange.getMinY()));
-
-            aMappingTransform.scale(fTargetWidth / fSourceWidth, fTargetHeight / fSourceHeight);
-            aMappingTransform.translate(aTargetRange.getMinX(), aTargetRange.getMinY());
-
-            // apply mirrorings
-            if(bMirrorX || bMirrorY)
-            {
-                aMappingTransform.translate(-aTargetRange.getCenterX(), -aTargetRange.getCenterY());
-                aMappingTransform.scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0); // #119176# small typo with X/Y
-                aMappingTransform.translate(aTargetRange.getCenterX(), aTargetRange.getCenterY());
-            }
+            // map graphic range to target range. This will e.g. automatically include
+            // tme mapping from 1/100th mm content to twips if needed when the target
+            // range is defined in twips
+            const basegfx::B2DHomMatrix aMappingTransform(
+                basegfx::tools::createSourceRangeTargetRangeTransform(
+                    rSourceRange,
+                    rTargetRange));
 
             // Fill ViewInformation. Use MappingTransform here, so there is no need to
             // embed the primitives to it. Use original TargetRange here so there is also
@@ -875,7 +837,7 @@ bool paintUsingPrimitivesHelper(
             const drawinglayer::geometry::ViewInformation2D aViewInformation2D(
                 aMappingTransform,
                 rOutputDevice.GetViewTransformation(),
-                aTargetRange,
+                rTargetRange,
                 0,
                 0.0,
                 uno::Sequence< beans::PropertyValue >());
@@ -983,14 +945,6 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
                 ::lcl_PaintReplacement( aAlignedGrfArea, aTxt, *pShell, this, sal_False );
                 bContinue = sal_False;
             }
-            else if( rGrfObj.IsCached( pOut, aAlignedGrfArea.Pos(),
-                                    aAlignedGrfArea.SSize(), &aGrfAttr ))
-            {
-                pGrfNd->DrawGraphicWithPDFHandling(*pOut,
-                    aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(),
-                    &aGrfAttr );
-                bContinue = sal_False;
-            }
         }
 
         if( bContinue )
@@ -1028,68 +982,30 @@ void SwNoTxtFrm::PaintPicture( OutputDevice* pOut, const SwRect &rGrfArea ) cons
                 }
                 else
                 {
-                    const SvgDataPtr& rSvgDataPtr = rGrfObj.GetGraphic().getSvgData();
-                    bool bDone(false);
-
-                    if(rSvgDataPtr.get())
-                    {
-                        // Graphic is Svg and can be painted as primitives (vector graphic)
-                        const basegfx::B2DRange aTargetRange(
-                            aAlignedGrfArea.Left(), aAlignedGrfArea.Top(),
-                            aAlignedGrfArea.Right(), aAlignedGrfArea.Bottom());
-                        const bool bCropped(aGrfAttr.IsCropped());
-                        drawinglayer::primitive2d::Primitive2DSequence aContent;
-                        GraphicAttr aSuppressGraphicAttr(aGrfAttr);
-
-                        aSuppressGraphicAttr.SetCrop(0, 0, 0, 0);
-                        aSuppressGraphicAttr.SetRotation(0);
-                        aSuppressGraphicAttr.SetMirrorFlags(0);
-
-                        const bool bNeedTransformedGraphic(
-                            aSuppressGraphicAttr.IsSpecialDrawMode() ||
-                            aSuppressGraphicAttr.IsAdjusted() ||
-                            aSuppressGraphicAttr.IsMirrored() ||
-                            aSuppressGraphicAttr.IsRotated() ||
-                            aSuppressGraphicAttr.IsTransparent());
-
-                        if(bNeedTransformedGraphic)
-                        {
-                            // #122039# need to apply graphic transformation if GraphicAttr are used qwhich need this
-                            const Graphic aTransformedGraphic(rGrfObj.GetTransformedGraphic(&aSuppressGraphicAttr));
-                            const basegfx::B2DRange aRange(rSvgDataPtr->getRange());
-                            const basegfx::B2DHomMatrix aTransform(
-                                basegfx::tools::createScaleTranslateB2DHomMatrix(
-                                    aRange.getRange(),
-                                    aRange.getMinimum()));
-
-                            aContent.realloc(1);
-                            aContent[0] = new drawinglayer::primitive2d::BitmapPrimitive2D(
-                                aTransformedGraphic.GetBitmapEx(),
-                                aTransform);
-                        }
-                        else
-                        {
-                            aContent = rSvgDataPtr->getPrimitive2DSequence();
-                        }
-
-                        bDone = paintUsingPrimitivesHelper(
-                            *pOut,
-                            aContent,
-                            rSvgDataPtr->getRange(),
-                            aTargetRange,
-                            bCropped ? aGrfAttr.GetLeftCrop() : 0,
-                            bCropped ? aGrfAttr.GetTopCrop() : 0,
-                            bCropped ? aGrfAttr.GetRightCrop() : 0,
-                            bCropped ? aGrfAttr.GetBottomCrop() : 0,
-                            aGrfAttr.GetMirrorFlags() & BMP_MIRROR_HORZ,
-                            aGrfAttr.GetMirrorFlags() & BMP_MIRROR_VERT);
-                    }
-
-                    if(!bDone)
-                    {
-                        // fallback paint, uses replacement image
-                        pGrfNd->DrawGraphicWithPDFHandling(*pOut, aAlignedGrfArea.Pos(), aAlignedGrfArea.SSize(), &aGrfAttr);
-                    }
+                    // unify using GraphicPrimitive2D
+                    // -> the primitive handles all crop and mirror stuff
+                    // -> the primitive renderer will create the needed pdf export data
+                    // -> if bitmap conent, it will be cached system-dependent
+                    const basegfx::B2DRange aTargetRange(
+                        aAlignedGrfArea.Left(), aAlignedGrfArea.Top(),
+                        aAlignedGrfArea.Right(), aAlignedGrfArea.Bottom());
+                    const basegfx::B2DHomMatrix aTargetTransform(
+                        basegfx::tools::createScaleTranslateB2DHomMatrix(
+                            aTargetRange.getRange(),
+                            aTargetRange.getMinimum()));
+                    drawinglayer::primitive2d::Primitive2DSequence aContent;
+
+                    aContent.realloc(1);
+                    aContent[0] = new drawinglayer::primitive2d::GraphicPrimitive2D(
+                        aTargetTransform,
+                        rGrfObj.GetGraphic(),
+                        aGrfAttr);
+
+                    paintUsingPrimitivesHelper(
+                        *pOut,
+                        aContent,
+                        aTargetRange,
+                        aTargetRange);
                 }
             }
             else
commit 4487eab3cacae1e0e72406017d03a80dc73597e8
Author: Armin Le Grand <alg at apache.org>
Date:   Thu Oct 31 11:53:29 2013 +0000

    i123573 corrected reaction on ItemChanges for CustomShapes

diff --git a/svx/inc/svx/sdr/properties/customshapeproperties.hxx b/svx/inc/svx/sdr/properties/customshapeproperties.hxx
index e4f3caa..b396c8e 100644
--- a/svx/inc/svx/sdr/properties/customshapeproperties.hxx
+++ b/svx/inc/svx/sdr/properties/customshapeproperties.hxx
@@ -34,7 +34,8 @@ namespace sdr
     {
         class CustomShapeProperties : public TextProperties
         {
-            void UpdateTextFrameStatus();
+        private:
+            void UpdateTextFrameStatus(bool bInvalidateRenderGeometry);
 
         protected:
             // create a new itemset
diff --git a/svx/source/sdr/properties/customshapeproperties.cxx b/svx/source/sdr/properties/customshapeproperties.cxx
index be8fe35..79695d5 100644
--- a/svx/source/sdr/properties/customshapeproperties.cxx
+++ b/svx/source/sdr/properties/customshapeproperties.cxx
@@ -39,21 +39,32 @@ namespace sdr
 {
     namespace properties
     {
-        void CustomShapeProperties::UpdateTextFrameStatus()
+        void CustomShapeProperties::UpdateTextFrameStatus(bool bInvalidateRenderGeometry)
         {
             SdrObjCustomShape& rObj = static_cast< SdrObjCustomShape& >(GetSdrObject());
             const bool bOld(rObj.bTextFrame);
 
+            // change TextFrame flag when bResizeShapeToFitText changes (which is mapped
+            // on the item SDRATTR_TEXT_AUTOGROWHEIGHT for custom shapes, argh)
             rObj.bTextFrame = 0 != static_cast< const SdrTextAutoGrowHeightItem& >(GetObjectItemSet().Get(SDRATTR_TEXT_AUTOGROWHEIGHT)).GetValue();
 
+            // check if it did change
             if(rObj.bTextFrame != bOld)
             {
-                rObj.InvalidateRenderGeometry();
+                // on change also invalidate render geometry
+                bInvalidateRenderGeometry = true;
 
-                // #115391# Potential recursuin, since it calls SetObjectItemSet again, but rObj.bTextFrame
-                // will not change again, thus it will be only one level and terminate
+                // #115391# Potential recursion, since it calls SetObjectItemSet again, but rObj.bTextFrame
+                // will not change again. Thus it will be only one level and terminate safely
                 rObj.AdaptTextMinSize();
             }
+
+            if(bInvalidateRenderGeometry)
+            {
+                // if asked for or bResizeShapeToFitText changed, make sure that
+                // the render geometry is reconstructed using changed parameters
+                rObj.InvalidateRenderGeometry();
+            }
         }
 
         SfxItemSet& CustomShapeProperties::CreateObjectSpecificItemSet(SfxItemPool& rPool)
@@ -134,7 +145,7 @@ namespace sdr
             TextProperties::ItemSetChanged(rSet);
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::PostItemChange(const sal_uInt16 nWhich)
@@ -144,7 +155,7 @@ namespace sdr
                 case SDRATTR_TEXT_AUTOGROWHEIGHT:
                 {
                     // #115391#  update bTextFrame and RenderGeometry using AdaptTextMinSize()
-                    UpdateTextFrameStatus();
+                    UpdateTextFrameStatus(false);
                     break;
                 }
                 default:
@@ -163,7 +174,7 @@ namespace sdr
             TextProperties::ItemChange( nWhich, pNewItem );
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::SetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr)
@@ -172,13 +183,13 @@ namespace sdr
             TextProperties::SetStyleSheet( pNewStyleSheet, bDontRemoveHardAttr );
 
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
         }
 
         void CustomShapeProperties::ForceDefaultAttributes()
         {
             // update bTextFrame and RenderGeometry
-            UpdateTextFrameStatus();
+            UpdateTextFrameStatus(true);
 
             // SJ: Following is no good if creating customshapes, leading to objects that are white after loading via xml
             // This means: Do *not* call parent here is by purpose...
@@ -226,11 +237,8 @@ namespace sdr
                 bRemoveRenderGeometry = sal_True;
             }
 
-            if ( bRemoveRenderGeometry )
-            {
-                // update bTextFrame and RenderGeometry
-                UpdateTextFrameStatus();
-            }
+            // update bTextFrame and RenderGeometry
+            UpdateTextFrameStatus(bRemoveRenderGeometry);
         }
     } // end of namespace properties
 } // end of namespace sdr
commit 97481ab1d4dc21f78cfcf503d4cfe1df1c8cf3cc
Author: Andre Fischer <af at apache.org>
Date:   Thu Oct 31 10:37:56 2013 +0000

    123595: Cleanup logging in make_installer.pl and its modules.

diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index fe8c944..60f7006 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -103,13 +103,18 @@ use installer::ziplist;
 #################################################
 
 installer::logger::starttime();
+$installer::logger::Global->add_timestamp("starting logging");
+
+# While there is no language set and logger::Lang is not yet tied to a log file,
+# forward its output to logger::Global.
+$installer::logger::Lang->set_forward($installer::logger::Global);
 
 #########################################
 # Checking the environment and setting
 # most important variables
 #########################################
 
-installer::logger::print_message( "... checking environment variables ...\n" );
+$installer::logger::Info->print( "... checking environment variables ...\n" );
 my $environmentvariableshashref = installer::control::check_system_environment();
 
 installer::environment::set_global_environment_variables($environmentvariableshashref);
@@ -153,7 +158,7 @@ my $current_install_number = "";
 # Checking the system requirements
 ######################################
 
-installer::logger::print_message( "... checking required files ...\n" );
+$installer::logger::Info->print( "... checking required files ...\n" );
 installer::control::check_system_path();
 
 my $pathvariableshashref = installer::environment::create_pathvariables($environmentvariableshashref);
@@ -172,7 +177,7 @@ installer::logger::globallog("zip list file: $installer::globals::ziplistname");
 
 my $ziplistref = installer::files::read_file($installer::globals::ziplistname);
 
-installer::logger::print_message( "... analyzing $installer::globals::ziplistname ... \n" );
+$installer::logger::Info->print( "... analyzing $installer::globals::ziplistname ... \n" );
 
 my ($productblockref, $parent) = installer::ziplist::getproductblock($ziplistref, $installer::globals::product, 1);     # product block from zip.lst
 if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . "productblock.log" ,$productblockref); }
@@ -361,7 +366,7 @@ if ($installer::globals::setupscript_defined_in_productlist) { installer::setups
 
 installer::logger::globallog("setup script file: $installer::globals::setupscriptname");
 
-installer::logger::print_message( "... analyzing script: $installer::globals::setupscriptname ... \n" );
+$installer::logger::Info->print( "... analyzing script: $installer::globals::setupscriptname ... \n" );
 
 my $setupscriptref = installer::files::read_file($installer::globals::setupscriptname); # Reading the setup script file
 
@@ -406,7 +411,7 @@ if ( $installer::globals::globallogging ) { installer::files::save_file($logging
 
 installer::logger::log_hashref($allvariableshashref);
 
-installer::logger::print_message( "... analyzing directories ... \n" );
+$installer::logger::Info->print( "... analyzing directories ... \n" );
 
 # Collect all directories in the script to get the destination dirs
 
@@ -426,7 +431,7 @@ if ( $installer::globals::globallogging ) { installer::files::save_array_of_hash
 installer::scriptitems::resolve_all_directory_names($dirsinproductarrayref);
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productdirectories2.log", $dirsinproductarrayref); }
 
-installer::logger::print_message( "... analyzing files ... \n" );
+$installer::logger::Info->print( "... analyzing files ... \n" );
 
 my $filesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "File");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles1.log", $filesinproductarrayref); }
@@ -470,7 +475,7 @@ if (( $installer::globals::packageformat ne "installed" ) && ( $installer::globa
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2cc.log", $filesinproductarrayref); }
 }
 
-installer::logger::print_message( "... analyzing scpactions ... \n" );
+$installer::logger::Info->print( "... analyzing scpactions ... \n" );
 
 my $scpactionsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ScpAction");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions1.log", $scpactionsinproductarrayref); }
@@ -492,12 +497,12 @@ if ( $installer::globals::globallogging ) { installer::files::save_array_of_hash
 installer::scriptitems::change_keys_of_scpactions($scpactionsinproductarrayref);
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productscpactions2.log", $scpactionsinproductarrayref); }
 
-installer::logger::print_message( "... analyzing shortcuts ... \n" );
+$installer::logger::Info->print( "... analyzing shortcuts ... \n" );
 
 my $linksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Shortcut");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks1.log", $linksinproductarrayref); }
 
-installer::logger::print_message( "... analyzing unix links ... \n" );
+$installer::logger::Info->print( "... analyzing unix links ... \n" );
 
 my $unixlinksinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Unixlink");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks1.log", $unixlinksinproductarrayref); }
@@ -505,12 +510,12 @@ if ( $installer::globals::globallogging ) { installer::files::save_array_of_hash
 # $unixlinksinproductarrayref = installer::scriptitems::filter_layerlinks_from_unixlinks($unixlinksinproductarrayref);
 # if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks1b.log", $unixlinksinproductarrayref); }
 
-installer::logger::print_message( "... analyzing profile ... \n" );
+$installer::logger::Info->print( "... analyzing profile ... \n" );
 
 my $profilesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Profile");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles1.log", $profilesinproductarrayref); }
 
-installer::logger::print_message( "... analyzing profileitems ... \n" );
+$installer::logger::Info->print( "... analyzing profileitems ... \n" );
 
 my $profileitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ProfileItem");
 if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profileitems1.log", $profileitemsinproductarrayref); }
@@ -523,12 +528,12 @@ my $mergemodulesarrayref;
 
 if ( $installer::globals::iswindowsbuild )  # Windows specific items: Folder, FolderItem, RegistryItem, WindowsCustomAction
 {
-    installer::logger::print_message( "... analyzing folders ... \n" );
+    $installer::logger::Info->print( "... analyzing folders ... \n" );
 
     $folderinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Folder");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder1.log", $folderinproductarrayref); }
 
-    installer::logger::print_message( "... analyzing folderitems ... \n" );
+    $installer::logger::Info->print( "... analyzing folderitems ... \n" );
 
     $folderitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "FolderItem");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems1.log", $folderitemsinproductarrayref); }
@@ -539,7 +544,7 @@ if ( $installer::globals::iswindowsbuild )  # Windows specific items: Folder, Fo
     installer::setupscript::prepare_non_advertised_files($folderitemsinproductarrayref, $filesinproductarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles2d.log", $filesinproductarrayref); }
 
-    installer::logger::print_message( "... analyzing registryitems ... \n" );
+    $installer::logger::Info->print( "... analyzing registryitems ... \n" );
 
     $registryitemsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "RegistryItem");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems1.log", $registryitemsinproductarrayref); }
@@ -547,12 +552,12 @@ if ( $installer::globals::iswindowsbuild )  # Windows specific items: Folder, Fo
     $registryitemsinproductarrayref = installer::scriptitems::remove_uninstall_regitems_from_script($registryitemsinproductarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems1b.log", $registryitemsinproductarrayref); }
 
-    installer::logger::print_message( "... analyzing Windows custom actions ... \n" );
+    $installer::logger::Info->print( "... analyzing Windows custom actions ... \n" );
 
     $windowscustomactionsarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "WindowsCustomAction");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "windowscustomactions1.log", $windowscustomactionsarrayref); }
 
-    installer::logger::print_message( "... analyzing Windows merge modules ... \n" );
+    $installer::logger::Info->print( "... analyzing Windows merge modules ... \n" );
 
     $mergemodulesarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "MergeModule");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "mergemodules1.log", $mergemodulesarrayref); }
@@ -562,7 +567,7 @@ my $modulesinproductarrayref;
 
 if (!($installer::globals::is_copy_only_project))
 {
-    installer::logger::print_message( "... analyzing modules ... \n" );
+    $installer::logger::Info->print( "... analyzing modules ... \n" );
 
     $modulesinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Module");
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "modules1.log", $modulesinproductarrayref); }
@@ -616,6 +621,7 @@ if ( $installer::globals::debug ) { installer::logger::savedebug($installer::glo
 
 if ( $installer::globals::debug ) { installer::logger::debuginfo("\nPart 1b: The language dependent part\n"); }
 
+
 for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 {
     my $languagesarrayref = installer::languages::get_all_languages_for_one_product($installer::globals::languageproducts[$n], $allvariableshashref);
@@ -623,8 +629,8 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
     $installer::globals::alllanguagesinproductarrayref = $languagesarrayref;
     my $languagestringref = installer::languages::get_language_string($languagesarrayref);
-    installer::logger::print_message( "------------------------------------\n" );
-    installer::logger::print_message( "... languages $$languagestringref ... \n" );
+    $installer::logger::Info->print( "------------------------------------\n" );
+    $installer::logger::Info->print( "... languages $$languagestringref ... \n" );
 
     if ( $installer::globals::patch )
     {
@@ -649,7 +655,6 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Until now only global logging into default: logfile.txt
     ############################################################
 
-    @installer::globals::logfileinfo = ();  # new logfile array and new logfile name
     installer::logger::copy_globalinfo_into_logfile();
     $installer::globals::globalinfo_copied = 1;
 
@@ -667,13 +672,25 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         $loglanguagestring = "lang_" . $number_of_languages . "_id_" . $id;
     }
 
-    $installer::globals::logfilename = "log_" . $installer::globals::build;
-    if ( $logminor ne "" ) { $installer::globals::logfilename .= "_" . $logminor; }
-    $installer::globals::logfilename .= "_" . $loglanguagestring;
-    $installer::globals::logfilename .= ".log";
+    # Setup the directory where the language dependent log file will be stored.
     $loggingdir = $loggingdir . $loglanguagestring . $installer::globals::separator;
     installer::systemactions::create_directory($loggingdir);
 
+    # Set language dependent logging.
+    $installer::globals::logfilename = sprintf("log_%s%s_%s.log",
+        $installer::globals::build,
+        $logminor ne "" ? "_" . $logminor : "",
+        $loglanguagestring);
+    $installer::logger::Lang->set_filename($loggingdir . $installer::globals::logfilename);
+    $installer::logger::Lang->copy_lines_from($installer::logger::Global);
+    $installer::logger::Lang->set_filter(\&installer::control::filter_log_error);
+    installer::control::prepare_error_processing();
+    # All logging to the console is also forwarded to the language dependen log.
+    $installer::logger::Lang->set_forward(undef);
+    $installer::logger::Info->set_forward($installer::logger::Lang);
+    # Scan all log lines for error messages.
+    $installer::logger::Lang->add_timestamp("starting log for language ".$loglanguagestring);
+
     if ($loglanguagestring ne $loglanguagestring_orig) {
         (my $dir = $loggingdir) =~ s!/$!!;
         open(my $F1, "> $dir.dir");
@@ -714,7 +731,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     {
         if ( $allvariableshashref->{'UPDATE_DATABASE'} )
         {
-            installer::logger::print_message( "... analyzing update database ...\n" );
+            $installer::logger::Info->print( "... analyzing update database ...\n" );
             $refdatabase = installer::windows::update::readdatabase($allvariableshashref, $languagestringref, $includepatharrayref);
 
             if ( $installer::globals::updatedatabase )
@@ -776,7 +793,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # files part, language dependent
     #####################################
 
-    installer::logger::print_message( "... analyzing files ...\n" );
+    $installer::logger::Info->print( "... analyzing files ...\n" );
 
     my $filesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($filesinproductarrayref, $languagesarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles4.log", $filesinproductlanguageresolvedarrayref); }
@@ -833,15 +850,11 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     installer::scriptitems::make_filename_language_specific($filesinproductlanguageresolvedarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles10f.log", $filesinproductlanguageresolvedarrayref); }
 
-    # print "... calculating checksums ...\n";
-    # my $checksumfile = installer::worker::make_checksum_file($filesinproductlanguageresolvedarrayref, $includepatharrayref);
-    # if ( $installer::globals::globallogging ) { installer::files::save_file($loggingdir . $installer::globals::checksumfilename, $checksumfile); }
-
     ######################################################################################
     # Unzipping files with flag ARCHIVE and putting all included files into the file list
     ######################################################################################
 
-    installer::logger::print_message( "... analyzing files with flag ARCHIVE ...\n" );
+    $installer::logger::Info->print( "... analyzing files with flag ARCHIVE ...\n" );
 
     my @additional_paths_from_zipfiles = ();
 
@@ -861,7 +874,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Files with flag SUBST_FILENAME
     #####################################
 
-    installer::logger::print_message( "... analyzing files with flag SUBST_FILENAME ...\n" );
+    $installer::logger::Info->print( "... analyzing files with flag SUBST_FILENAME ...\n" );
 
     installer::substfilenamefiles::resolving_subst_filename_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, $languagestringref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles12d.log", $filesinproductlanguageresolvedarrayref); }
@@ -870,7 +883,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Files with flag SCPZIP_REPLACE
     #####################################
 
-    installer::logger::print_message( "... analyzing files with flag SCPZIP_REPLACE ...\n" );
+    $installer::logger::Info->print( "... analyzing files with flag SCPZIP_REPLACE ...\n" );
 
     # Editing files with flag SCPZIP_REPLACE.
 
@@ -881,7 +894,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Files with flag PATCH_SO_NAME
     #####################################
 
-    installer::logger::print_message( "... analyzing files with flag PATCH_SO_NAME ...\n" );
+    $installer::logger::Info->print( "... analyzing files with flag PATCH_SO_NAME ...\n" );
 
     # Editing files with flag PATCH_SO_NAME.
 
@@ -892,7 +905,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Files with flag HIDDEN
     #####################################
 
-    installer::logger::print_message( "... analyzing files with flag HIDDEN ...\n" );
+    $installer::logger::Info->print( "... analyzing files with flag HIDDEN ...\n" );
 
     installer::worker::resolving_hidden_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13c.log", $filesinproductlanguageresolvedarrayref); }
@@ -901,7 +914,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Collecting directories for epm list file
     ############################################
 
-    installer::logger::print_message( "... analyzing all directories for this product ...\n" );
+    $installer::logger::Info->print( "... analyzing all directories for this product ...\n" );
 
     # There are two ways for a directory to be included into the epm directory list:
     # 1. Looking for all destination paths in the files array
@@ -944,7 +957,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # language dependent links part
     #########################################################
 
-    installer::logger::print_message( "... analyzing links ...\n" );
+    $installer::logger::Info->print( "... analyzing links ...\n" );
 
     my $linksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($linksinproductarrayref, $languagesarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productlinks2.log", $linksinproductlanguageresolvedarrayref); }
@@ -973,7 +986,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # language dependent unix links part
     #########################################################
 
-    installer::logger::print_message( "... analyzing unix links ...\n" );
+    $installer::logger::Info->print( "... analyzing unix links ...\n" );
 
     my $unixlinksinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($unixlinksinproductarrayref, $languagesarrayref);
     if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "unixlinks3.log", $unixlinksinproductlanguageresolvedarrayref); }
@@ -993,7 +1006,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
     if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::product =~ /ada/i )) && (!($installer::globals::languagepack)))
     {
-        installer::logger::print_message( "... creating profiles ...\n" );
+        $installer::logger::Info->print( "... creating profiles ...\n" );
 
         $profilesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($profilesinproductarrayref, $languagesarrayref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "profiles2.log", $profilesinproductlanguageresolvedarrayref); }
@@ -1035,7 +1048,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # language dependent part for folder
         #########################################################
 
-        installer::logger::print_message( "... analyzing folder ...\n" );
+        $installer::logger::Info->print( "... analyzing folder ...\n" );
 
         $folderinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderinproductarrayref, $languagesarrayref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folder2.log", $folderinproductlanguageresolvedarrayref); }
@@ -1047,7 +1060,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # language dependent part for folderitems
         #########################################################
 
-        installer::logger::print_message( "... analyzing folderitems ...\n" );
+        $installer::logger::Info->print( "... analyzing folderitems ...\n" );
 
         $folderitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($folderitemsinproductarrayref, $languagesarrayref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "folderitems2.log", $folderitemsinproductlanguageresolvedarrayref); }
@@ -1059,7 +1072,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # language dependent part for registryitems
         #########################################################
 
-        installer::logger::print_message( "... analyzing registryitems ...\n" );
+        $installer::logger::Info->print( "... analyzing registryitems ...\n" );
 
         $registryitemsinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($registryitemsinproductarrayref, $languagesarrayref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems2.log", $registryitemsinproductlanguageresolvedarrayref); }
@@ -1076,7 +1089,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
     if (!($installer::globals::is_copy_only_project))
     {
-        installer::logger::print_message( "... analyzing modules ...\n" );
+        $installer::logger::Info->print( "... analyzing modules ...\n" );
 
         $modulesinproductlanguageresolvedarrayref = installer::scriptitems::resolving_all_languages_in_productlists($modulesinproductarrayref, $languagesarrayref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes_modules($loggingdir . "modules2.log", $modulesinproductlanguageresolvedarrayref); }
@@ -1170,7 +1183,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
     if (( $installer::globals::iswindowsbuild ) && ( ! $installer::globals::patch ))    # Windows specific items: Folder, FolderItem, RegistryItem
     {
-        installer::logger::print_message( "... creating inf files ...\n" );
+        $installer::logger::Info->print( "... creating inf files ...\n" );
         installer::worker::create_inf_file($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $folderinproductlanguageresolvedarrayref, $folderitemsinproductlanguageresolvedarrayref, $modulesinproductlanguageresolvedarrayref, $languagesarrayref, $languagestringref, $allvariableshashref);
         if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles16c.log", $filesinproductlanguageresolvedarrayref); }
     }
@@ -1203,7 +1216,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     # Analyzing the package structure
     ###########################################################
 
-    installer::logger::print_message( "... analyzing package list ...\n" );
+    $installer::logger::Info->print( "... analyzing package list ...\n" );
 
     my $packages = installer::packagelist::collectpackages($modulesinproductlanguageresolvedarrayref, $languagesarrayref);
     installer::packagelist::check_packagelist($packages);
@@ -1240,13 +1253,6 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
     if (!( $installer::globals::iswindowsbuild ))
     {
         ####################################################
-        # Writing log file before packages are packed
-        ####################################################
-
-        installer::logger::print_message( "... creating log file " . $loggingdir . $installer::globals::logfilename . "\n" );
-        installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo);
-
-        ####################################################
         # Creating directories
         ####################################################
 
@@ -1254,8 +1260,6 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
         my $listfiledir = installer::systemactions::create_directories("listfile", $languagestringref);
         my $installlogdir = installer::systemactions::create_directory_next_to_directory($installdir, "log");
-        # installer::packagelist::add_defaultpathes_into_filescollector($filesinproductlanguageresolvedarrayref);
-        # my $installchecksumdir = installer::systemactions::create_directory_next_to_directory($installdir, "checksum");
 
         ####################################################
         # Reading for Solaris all package descriptions
@@ -1362,9 +1366,8 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                     push(@{$packages}, $onepackage);  # ... and adding it to the end
                     $installer::globals::poolshiftedpackages{$packagename} = 1; # only shifting each package once
                     $k--;                                                       # decreasing the counter
-                    my $localinfoline = "Pool: Package \"$packagename\" cannot be created at the moment. Trying again later (1).\n";
-                    installer::logger::print_message($localinfoline);
-                    push( @installer::globals::logfileinfo, $localinfoline);
+                    $installer::logger::Info->printf("Pool: Package \"%s\" cannot be created at the moment. Trying again later (1).\n", $packagename);
+                    $installer::logger::Lang->printf("Pool: Package \"%s\" cannot be created at the moment. Trying again later (1).\n", $packagename);
                     next;                                                       # repeating this iteration with new package
                 }
             }
@@ -1432,8 +1435,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
             if ( ! ( $#{$filesinpackage} > -1 ))
             {
                 push(@installer::globals::emptypackages, $packagename);
-                $infoline = "\n\nNo file in package: $packagename \-\> Skipping\n\n";
-                push(@installer::globals::logfileinfo, $infoline);
+                $installer::logger::Lang->print("\n");
+                $installer::logger::Lang->print("\n");
+                $installer::logger::Lang->print("No file in package: %s \-\> Skipping\n\n", $packagename);
                 next;   # next package, end of loop !
             }
 
@@ -1447,8 +1451,10 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                 my $patchfiles = installer::worker::collect_all_items_with_special_flag($filesinpackage ,"PATCH");
                 if ( ! ( $#{$patchfiles} > -1 ))
                 {
-                    $infoline = "\n\nLinux Patch: No patch file in package: $packagename \-\> Skipping\n\n";
-                    push(@installer::globals::logfileinfo, $infoline);
+                    $installer::logger::Lang->print("\n");
+                    $installer::logger::Lang->print("\n");
+                    $installer::logger::Lang->print("Linux Patch: No patch file in package: %s \-\> Skipping\n\n",
+                        $packagename);
                     next;
                 }
             }
@@ -1542,7 +1548,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
                 my $epmfilename = "epm_" . $onepackagename . $linkaddon . ".lst";
 
-                installer::logger::print_message( "... creating epm list file $epmfilename ... \n" );
+                $installer::logger::Info->print( "... creating epm list file $epmfilename ... \n" );
 
                 my $completeepmfilename = $listfiledir . $installer::globals::separator . $epmfilename;
 
@@ -1559,8 +1565,8 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                     if ( ! ( $#{$filesinpackage} > -1 ))
                     {
                         push(@installer::globals::emptypackages, $packagename);
-                        $infoline = "\nNo file in package: $packagename \-\> Skipping\n";
-                        push(@installer::globals::logfileinfo, $infoline);
+                        $installer::logger::Lang->print("\n");
+                        $installer::logger::Lang->print("No file in package: %s \-\> Skipping\n", $packagename);
                         next;   # next package, end of loop !
                     }
                 }
@@ -1612,9 +1618,10 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                         push(@{$packages}, $onepackage);  # ... and adding it to the end
                         $installer::globals::poolshiftedpackages{$packagename} = 1; # only shifting each package once
                         $k--;                                                       # decreasing the counter
-                        my $localinfoline = "\nPool: Package \"$packagename\" cannot be created at the moment. Trying again later (2).\n";
-                        installer::logger::print_message($localinfoline);
-                        push( @installer::globals::logfileinfo, $localinfoline);
+                        $installer::logger::Info->print("\n");
+                        $installer::logger::Info->print("Pool: Package \"%s\" cannot be created at the moment. Trying again later (2).\n", $packagename);
+                        $installer::logger::Lang->print("\n");
+                        $installer::logger::Lang->print("Pool: Package \"%s\" cannot be created at the moment. Trying again later (2).\n", $packagename);
                         next;                                                       # repeating this iteration with new package
                     }
                 }
@@ -1622,9 +1629,10 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                 if ( $use_package_from_pool == 4 ) # There was a problem with pooling. Repeat this package immediately.
                 {
                         $k--;                                                       # decreasing the counter
-                        my $localinfoline = "\nPool: Package \"$packagename\" had pooling problems. Repeating packaging immediately (3).\n";
-                        installer::logger::print_message($localinfoline);
-                        push( @installer::globals::logfileinfo, $localinfoline);
+                        $installer::logger::Info->print("\n");
+                        $installer::logger::Info->print("Pool: Package \"%s\" had pooling problems. Repeating packaging immediately (3).\n", $packagename);
+                        $installer::logger::Lang->print("\n");
+                        $installer::logger::Lang->print("Pool: Package \"%s\" had pooling problems. Repeating packaging immediately (3).\n", $packagename);
                         next;                                                       # repeating this iteration
                 }
 
@@ -1654,7 +1662,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                         {
                             # ... now epm can be started, to create the installation sets
 
-                            installer::logger::print_message( "... starting patched epm ... \n" );
+                            $installer::logger::Info->print( "... starting patched epm ... \n" );
 
                             installer::epmfile::call_epm($epmexecutable, $completeepmfilename, $packagename, $includepatharrayref);
 
@@ -1686,7 +1694,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                         {
                             # ... now epm can be started, to create the installation sets
 
-                            installer::logger::print_message( "... starting unpatched epm ... \n" );
+                            $installer::logger::Info->print( "... starting unpatched epm ... \n" );
 
                             if ( $installer::globals::call_epm ) { installer::epmfile::call_epm($epmexecutable, $completeepmfilename, $packagename, $includepatharrayref); }
 
@@ -1906,7 +1914,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # Begin of functions that are used for the creation of idt files (Windows only)
         #################################################################################
 
-        installer::logger::print_message( "... creating idt files ...\n" );
+        $installer::logger::Info->print( "... creating idt files ...\n" );
 
         installer::logger::include_header_into_logfile("Creating idt files:");
 
@@ -1998,8 +2006,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
             installer::windows::assembly::add_assembly_condition_into_component_table($filesinproductlanguageresolvedarrayref, $newidtdir);
         }
 
-        $infoline = "\n";
-        push(@installer::globals::logfileinfo, $infoline);
+        $installer::logger::Lang->print("\n");
 
         # Localizing the language dependent idt files
         # For every language there will be a localized msi database
@@ -2019,7 +2026,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
             # Copy the template idt files and the new created idt files into this language directory
 
-            installer::logger::print_message( "... copying idt files ...\n" );
+            $installer::logger::Info->print( "... copying idt files ...\n" );
 
             installer::logger::include_header_into_logfile("Copying idt files to $languageidtdir:");
 
@@ -2035,14 +2042,14 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                 my $controlidttable = installer::files::read_file($controlidttablename);
                 installer::windows::idtglobal::add_language_checkboxes_to_database($controlidttable, $languagesarrayref);
                 installer::files::save_file($controlidttablename, $controlidttable);
-                $infoline = "Added checkboxes for language selection dialog into table $controlidttablename\n";
-                push(@installer::globals::logfileinfo, $infoline);
+                $installer::logger::Lang->printf("Added checkboxes for language selection dialog into table %s\n",
+                    $controlidttablename);
             }
 
             # Now all files are copied into a language specific directory
             # The template idt files can be translated
 
-            installer::logger::print_message( "... localizing idt files (language: $onelanguage) ...\n" );
+            $installer::logger::Info->print( "... localizing idt files (language: $onelanguage) ...\n" );
 
             installer::logger::include_header_into_logfile("Localizing idt files (Language: $onelanguage):");
 
@@ -2072,10 +2079,10 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
                 installer::files::save_file($oneidtfilename, $oneidtfile);
 
-                $infoline = "Translated idt file: $oneidtfilename into language $onelanguage\n";
-                push(@installer::globals::logfileinfo, $infoline);
-                $infoline = "Used languagefile: $languagefilename\n";
-                push(@installer::globals::logfileinfo, $infoline);
+                $installer::logger::Lang->printf("Translated idt file: %s into language %s\n",
+                    $oneidtfilename,
+                    $onelanguage);
+                $installer::logger::Lang->printf("Used languagefile: %s\n", $languagefilename);
             }
 
             # setting the encoding in every table (replacing WINDOWSENCODINGTEMPLATE)
@@ -2101,8 +2108,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                 installer::windows::idtglobal::add_licensefile_to_database($licensefile, $controltable);
                 installer::files::save_file($controltablename, $controltable);
 
-                $infoline = "Added licensefile $licensefilesource into database $controltablename\n";
-                push(@installer::globals::logfileinfo, $infoline);
+                $installer::logger::Lang->printf("Added licensefile %s into database %s\n",
+                    $licensefilesource,
+                    $controltablename);
             }
 
             # include a component into environment table if required
@@ -2160,7 +2168,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
                 my $msidatabasename = installer::windows::msiglobal::get_msidatabasename($allvariableshashref, $onelanguage);
                 my $msifilename = $languageidtdir . $installer::globals::separator . $msidatabasename;
 
-                installer::logger::print_message( "... creating msi database (language $onelanguage) ... \n" );
+                $installer::logger::Info->print( "... creating msi database (language $onelanguage) ... \n" );
 
                 installer::windows::msiglobal::set_uuid_into_component_table($languageidtdir, $allvariableshashref);    # setting new GUID for the components using the tool uuidgen.exe
                 installer::windows::msiglobal::prepare_64bit_database($languageidtdir, $allvariableshashref);   # making last 64 bit changes
@@ -2202,7 +2210,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
             if ( $allvariableshashref->{'ADDLANGUAGEINDATABASENAME'} ) { installer::windows::msiglobal::add_language_to_msi_database($defaultlanguage, $installdir, $allvariableshashref); }
 
-            installer::logger::print_message( "... generating setup.ini ...\n" );
+            $installer::logger::Info->print( "... generating setup.ini ...\n" );
 
             if ( ! $allvariableshashref->{'NOLOADERREQUIRED'} ) { installer::windows::msiglobal::create_setup_ini($languagesarrayref, $defaultlanguage, $installdir, $allvariableshashref); }
         }
@@ -2210,7 +2218,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # Analyzing the ScpActions and copying the files into the installation set
         # At least the loader.exe
 
-        installer::logger::print_message( "... copying files into installation set ...\n" );
+        $installer::logger::Info->print( "... copying files into installation set ...\n" );
 
         # installer::windows::msiglobal::copy_scpactions_into_installset($defaultlanguage, $installdir, $scpactionsinproductlanguageresolvedarrayref);
         installer::worker::put_scpactions_into_installset($installdir);
@@ -2230,7 +2238,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
             installer::windows::msiglobal::copy_child_projects_into_installset($installdir, $allvariableshashref);
         }
 
-        installer::logger::print_message( "... creating ddf files ...\n" );
+        $installer::logger::Info->print( "... creating ddf files ...\n" );
 
         # Creating all needed ddf files and generating a list
         # for the package process containing all system calls
@@ -2242,17 +2250,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
         # Update and patch reasons the pack order needs to be saved
         installer::windows::msiglobal::save_packorder();
 
-        $infoline = "\n";
-        push(@installer::globals::logfileinfo, $infoline);
-
-        ####################################
-        # Writing log file
-        # before cab files are packed
-        ####################################
-
-        installer::logger::print_message( "... creating log file $installer::globals::logfilename \n" );
-
-        installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo);
+        $installer::logger::Info->print("\n");
 
         #######################################################
         # Finally really create the installation packages,
@@ -2261,17 +2259,9 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
 
         if ( $installer::globals::iswin )   # only possible on a Windows platform
         {
-            installer::logger::print_message( "... packaging installation set ... \n" );
+            $installer::logger::Info->print( "... packaging installation set ... \n" );
             installer::windows::msiglobal::execute_packaging($installer::globals::packjobref, $loggingdir, $allvariableshashref);
             if ( $installer::globals::include_cab_in_msi ) { installer::windows::msiglobal::include_cabs_into_msi($installdir); }
-
-            ####################################
-            # Writing log file
-            # after cab files are packed
-            ####################################
-
-            installer::logger::print_message( "\n... creating log file $installer::globals::logfilename \n" );
-            installer::files::save_file($loggingdir . $installer::globals::logfilename, \@installer::globals::logfileinfo);
         }
 
         #######################################################
diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm
index 931c7ea..421c418 100644
--- a/solenv/bin/modules/installer/archivefiles.pm
+++ b/solenv/bin/modules/installer/archivefiles.pm
@@ -197,12 +197,10 @@ sub resolving_archive_flag
             {
                 $select_files = 1;
                 $selectlistfiles = get_patch_file_list( $onefile->{'Selectfiles'} );
-                $infoline = "Selected file list defined at file: $onefile->{'Name'} :\n";
-                push( @installer::globals::logfileinfo, $infoline);
-                for ( my $k = 0; $k <= $#{$selectlistfiles}; $k++ )
+                $installer::logging::Lang->printf("Selected file list defined at file: %s :\n", $onefile->{'Name'});
+                foreach my $line (@$selectlistfiles)
                 {
-                    $infoline = "\"${$selectlistfiles}[$k]\"\n";
-                    push( @installer::globals::logfileinfo, $infoline);
+                    $installer::logging::Lang->printf("\"%s\"\n", $line);
                 }
             }
 
@@ -216,12 +214,10 @@ sub resolving_archive_flag
             {
                 $select_patch_files = 1; # special handling if a Patchlist is defined
                 $patchlistfiles = get_patch_file_list( $onefile->{'Patchfiles'} );
-                $infoline = "Patch file list defined at file: $onefile->{'Name'} :\n";
-                push( @installer::globals::logfileinfo, $infoline);
-                for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ )
+                $installer::logger::Lang->printf("Patch file list defined at file: %s :\n", $onefile->{'Name'});
+                foreach my $line (@$patchlistfiles)
                 {
-                    $infoline = "\"${$patchlistfiles}[$k]\"\n";
-                    push( @installer::globals::logfileinfo, $infoline);
+                    $installer::logger::Lang->printf("\"%s\"\n", $line);
                 }
             }
 
@@ -254,8 +250,7 @@ sub resolving_archive_flag
             my $zip = Archive::Zip->new();
             if ( $zip->read($sourcepath) != AZ_OK )
             {
-                $infoline = "ERROR: Could not unzip $sourcepath\n";
-                push( @installer::globals::logfileinfo, $infoline);
+                $installer::logger::Lang->printf("ERROR: Could not unzip %s\n", $sourcepath);
             }
 
             my $counter = 0;
@@ -268,28 +263,27 @@ sub resolving_archive_flag
 
             if (! ( $counter > 0 )) # the zipfile is empty
             {
-                $infoline = "ERROR: Could not unzip $sourcepath\n";
-                push( @installer::globals::logfileinfo, $infoline);
-
+                $installer::logger::Lang->printf("ERROR: Could not unzip %s\n", $sourcepath);
             }
             else
             {
                 if ( $installer::globals::dounzip )         # really unpacking the files
                 {
-                    if ( $zip->extractTree("", $unzipdir) != AZ_OK ) { installer::exiter::exit_program("ERROR: $infoline", "resolving_archive_flag"); }
+                    if ( $zip->extractTree("", $unzipdir) != AZ_OK )
+                    {
+                        installer::exiter::exit_program("ERROR: can not unzip ".$sourcepath, "resolving_archive_flag");
+                    }
 
                     if (( $^O =~ /cygwin/i ) && ( $contains_dll ))
                     {
                         # Make dll's executable
                         $systemcall = "cd $unzipdir; find . -name \\*.dll -exec chmod 775 \{\} \\\;";
                         $returnvalue = system($systemcall);
-                        $infoline = "Systemcall: $systemcall\n";
-                        push( @installer::globals::logfileinfo, $infoline);
+                        $installer::logger::Lang->printf("Systemcall: %s\n", $systemcall);
 
                         if ($returnvalue)
                         {
-                            $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
-                            push( @installer::globals::logfileinfo, $infoline);
+                            $installer::logger::Lang->printf("ERROR: Could not execute \"\"!\n", $systemcall);
                         }
                     }
 
@@ -299,13 +293,10 @@ sub resolving_archive_flag
 
                         $systemcall = "cd $unzipdir; find . -type d -exec chmod 775 \{\} \\\;";
                         $returnvalue = system($systemcall);
-                        $infoline = "Systemcall: $systemcall\n";
-                        push( @installer::globals::logfileinfo, $infoline);
-
+                        $installer::logger::Lang->printf("Systemcall: %s\n", $systemcall);
                         if ($returnvalue)
                         {
-                            $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
-                            push( @installer::globals::logfileinfo, $infoline);
+                            $installer::logger::Lang->printf("ERROR: Could not execute \"\"!\n", $systemcall);
                         }
                     }
 
@@ -363,8 +354,10 @@ sub resolving_archive_flag
                         {
                             my $value = sprintf("%o", (stat($newfile{'sourcepath'}))[2]);
                             $newfile{'UnixRights'} = substr($value, 3);
-                            $infoline = "Setting unix rights for \"$newfile{'sourcepath'}\" to \"$newfile{'UnixRights'}\"\n";
-                            push( @installer::globals::logfileinfo, $infoline);
+                            $installer::logger::Lang->printf(
+                                "Setting unix rights for \"%s\" to \"%s\"\n",
+                                $newfile{'sourcepath'},
+                                $newfile{'UnixRights'});
                         }
 
                         if ( $set_executable_privileges )
@@ -375,8 +368,10 @@ sub resolving_archive_flag
                             if ( exists($executable_files_in_extensions{$compare_path}) )
                             {
                                 $newfile{'UnixRights'} = "775";
-                                $infoline = "Executable in Extension: Setting unix rights for \"$newfile{'sourcepath'}\" to \"$newfile{'UnixRights'}\"\n";
-                                push( @installer::globals::logfileinfo, $infoline);
+                                $installer::logger::Lang->printf(
+                                    "Executable in Extension: Setting unix rights for \"%s\" to \"%s\"\n",
+                                    $newfile{'sourcepath'},
+                                    $newfile{'UnixRights'});
                             }
                         }
 
@@ -384,14 +379,16 @@ sub resolving_archive_flag
                         {
                             if ( ! installer::existence::exists_in_array($zipname,$selectlistfiles) )
                             {
-                                $infoline = "Removing from ARCHIVE file $onefilename: $zipname\n";
-                                push( @installer::globals::logfileinfo, $infoline);
+                                $installer::logger::Lang->printf("Removing from ARCHIVE file %s: %s\n",
+                                    $onefilename,
+                                    $zipname);
                                 next; # ignoring files, that are not included in $selectlistfiles
                             }
                             else
                             {
-                                $infoline = "Keeping from ARCHIVE file $onefilename: $zipname\n";
-                                push( @installer::globals::logfileinfo, $infoline);
+                                $installer::logger::Lang->printf("Keeping from ARCHIVE file %s: \n",
+                                    $onefilename,
+                                    $zipname);
                                 push( @keptfiles, $zipname); # collecting all kept files
                             }
                         }
@@ -407,13 +404,9 @@ sub resolving_archive_flag
                                 $newfile{'Styles'} =~ s/\,\s*\,/\,/;
                                 $newfile{'Styles'} =~ s/\(\s*\,/\(/;
                                 $newfile{'Styles'} =~ s/\,\s*\)/\)/;
-                                # $infoline = "Removing PATCH flag from: $zipname\n";
-                                # push( @installer::globals::logfileinfo, $infoline);
                             }
                             else
                             {
-                                # $infoline = "Keeping PATCH flag at: $zipname\n";
-                                # push( @installer::globals::logfileinfo, $infoline);
                                 push( @keptpatchflags, $zipname); # collecting all PATCH flags
                             }
                         }
@@ -430,15 +423,15 @@ sub resolving_archive_flag
                             $newfile{'destination'} = $destination . $newzipname;
                             $newfile{'sourcepath'} = $unzipdir . $newzipname;
 
-                            $infoline = "RENAME_TO_LANGUAGE: Using $newzipname instead of $zipname!\n";
-                            push( @installer::globals::logfileinfo, $infoline);
+                            $installer::logger::Lang->printf("RENAME_TO_LANGUAGE: Using %s instead of %s!\n",
+                                $newzipname,
+                                $zipname);
                         }
 
                         my $sourcefiletest = $unzipdir . $zipname;
                         if ( ! -f $sourcefiletest )
                         {
-                            $infoline = "ATTENTION: Unzip failed for $sourcefiletest!\n";
-                            push( @installer::globals::logfileinfo, $infoline);
+                            $installer::logger::Lang->printf("ATTENTION: Unzip failed for %s!\n", $sourcefiletest);
                             $unziperror = 1;
                         }
 
@@ -455,35 +448,25 @@ sub resolving_archive_flag
 
                 if ( $select_files )
                 {
-                    my $number = $#{$selectlistfiles} + 1;
-                    $infoline = "SELECTLIST: Number of files in file selection list: $number\n";
-                    push( @installer::globals::logfileinfo, $infoline);
-                    $number = $#keptfiles + 1;
-                    $infoline = "SELECTLIST: Number of kept files: $number\n";
-                    push( @installer::globals::logfileinfo, $infoline);
-
-                    for ( my $k = 0; $k <= $#keptfiles; $k++ )
+                    $installer::logger::Lang->printf("SELECTLIST: Number of files in file selection list: %d\n",
+                        scalar @$selectlistfiles);
+                    $installer::logger::Lang->printf("SELECTLIST: Number of kept files: %d\n",
+                        scalar @keptfiles);
+
+                    foreach my $name (@keptfiles)
                     {
-                        $infoline = "KEPT FILES: $keptfiles[$k]\n";
-                        push( @installer::globals::logfileinfo, $infoline);
+                        $installer::logger::Lang->printf("KEPT FILES: %s\n", $name);
                     }
 
-                    my @warningfiles = ();
-
-                    for ( my $k = 0; $k <= $#{$selectlistfiles}; $k++ )
+                    foreach my $name (@$selectlistfiles)
                     {
-                        if ( ! installer::existence::exists_in_array(${$selectlistfiles}[$k],\@keptfiles) )
+                        if ( ! installer::existence::exists_in_array($name,\@keptfiles) )
                         {
-                            push(@warningfiles, ${$selectlistfiles}[$k]);
+                            $installer::logger::Lang->printf(
+                                "WARNING: %s not included in install set (does not exist in zip file)!\n",
+                                $name);;
                         }
                     }
-
-                    for ( my $k = 0; $k <= $#warningfiles; $k++ )
-                    {
-                        $infoline = "WARNING: $warningfiles[$k] not included in install set (does not exist in zip file)!\n";
-                        push( @installer::globals::logfileinfo, $infoline);
-                    }
-
                 }
 
                 # Comparing the content of @keptpatchflags and $patchlistfiles
@@ -493,41 +476,32 @@ sub resolving_archive_flag
 
                 if ( $select_patch_files )
                 {
-                    my $number = $#{$patchlistfiles} + 1;
-                    $infoline = "PATCHLIST: Number of files in patch list: $number\n";
-                    push( @installer::globals::logfileinfo, $infoline);
-                    $number = $#keptpatchflags + 1;
-                    $infoline = "PATCHLIST: Number of kept PATCH flags: $number\n";
-                    push( @installer::globals::logfileinfo, $infoline);
-
-                    for ( my $k = 0; $k <= $#keptpatchflags; $k++ )
+                    $installer::logger::Lang->printf("PATCHLIST: Number of files in patch list: %d\n",
+                        scalar @$patchlistfiles);
+                    $installer::logger::Lang->printf("PATCHLIST: Number of kept PATCH flags: %d\n",
+                        scalar @keptpatchflags);
+
+                    foreach my $flag (@keptpatchflags)
                     {
-                        $infoline = "KEPT PATCH FLAGS: $keptpatchflags[$k]\n";
-                        push( @installer::globals::logfileinfo, $infoline);
+                        $installer::logger::Lang->printf("KEPT PATCH FLAGS: %s\n",
+                            $flag);
                     }
 
-                    my @warningfiles = ();
-
-                    for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ )
+                    foreach my $name (@$patchlistfiles)
                     {
-                        if ( ! installer::existence::exists_in_array(${$patchlistfiles}[$k],\@keptpatchflags) )
+                        if ( ! installer::existence::exists_in_array($name,\@keptpatchflags) )
                         {
-                            push(@warningfiles, ${$patchlistfiles}[$k]);
+                            $installer::logger::Lang->printf(
+                                "WARNING: %s did not keep PATCH flag (does not exist in zip file)!\n",
+                                $name);
                         }
                     }
-
-                    for ( my $k = 0; $k <= $#warningfiles; $k++ )
-                    {
-                        $infoline = "WARNING: $warningfiles[$k] did not keep PATCH flag (does not exist in zip file)!\n";
-                        push( @installer::globals::logfileinfo, $infoline);
-                    }
                 }
 
                 if ( $unziperror )
                 {
                     installer::logger::print_warning( "Repeating to unpack $sourcepath! \n" );
-                    $infoline = "ATTENTION: Repeating to unpack $sourcepath !\n";
-                    push( @installer::globals::logfileinfo, $infoline);
+                    $installer::logger::Lang->printf("ATTENTION: Repeating to unpack %s!\n", $sourcepath);
                     $repeat_unzip = 1;
                     $maxcounter++;
 
@@ -538,8 +512,7 @@ sub resolving_archive_flag
                 }
                 else
                 {
-                    $infoline = "Info: $sourcepath unpacked without problems !\n";
-                    push( @installer::globals::logfileinfo, $infoline);
+                    $installer::logger::Lang->printf("Info: %s unpacked without problems !\n", $sourcepath);
                     $repeat_unzip = 0;
                     $maxcounter = 0;
                 }
@@ -551,8 +524,7 @@ sub resolving_archive_flag
         }
     }
 
-    $infoline = "\n";
-    push( @installer::globals::logfileinfo, $infoline);
+    $installer::logger::Lang->print("\n");
 
     return \@newallfilesarray;
 }
diff --git a/solenv/bin/modules/installer/configuration.pm b/solenv/bin/modules/installer/configuration.pm
index 325e9fa..5444f94 100644
--- a/solenv/bin/modules/installer/configuration.pm
+++ b/solenv/bin/modules/installer/configuration.pm
@@ -760,18 +760,16 @@ sub save_and_zip_configfile
 
     chdir($currentdir);
 
-    my $infoline = "Systemcall: $systemcall\n";
-    push( @installer::globals::logfileinfo, $infoline);
+    $installer::logger::Lang->printf("Systemcall: %s\n", $systemcall);
 
     if ($returnvalue)
     {
-        $infoline = "ERROR: Could not zip $savefilename to $zipfilename\n";
+        $installer::logger::Lang->printf("ERROR: Could not zip %s to %s\n", $savefilename, $zipfilename);
     }
     else
     {
-        $infoline = "SUCCESS: Zipped file $savefilename to $zipfilename\n";
+        $installer::logger::Lang->printf("SUCCESS: Zipped file %s to %s\n", $savefilename, $zipfilename);
     }
-    push( @installer::globals::logfileinfo, $infoline);
 
     return $zipfilename;
 }
@@ -889,9 +887,7 @@ sub create_configuration_files
         }
     }
 
-    my $infoline = "\n";
-    push( @installer::globals::logfileinfo, $infoline);
-
+    $installer::logger::Lang->print("\n");
 }
 
 1;
diff --git a/solenv/bin/modules/installer/control.pm b/solenv/bin/modules/installer/control.pm
index bad8c98..f48e6c1 100644
--- a/solenv/bin/modules/installer/control.pm
+++ b/solenv/bin/modules/installer/control.pm
@@ -32,6 +32,8 @@ use installer::pathanalyzer;
 use installer::scriptitems;
 use installer::systemactions;
 
+our @ErrorMessages = undef;
+
 #########################################################
 # Function that can be used for additional controls.
 # Search happens in $installer::globals::patharray.
@@ -41,9 +43,10 @@ sub check_needed_files_in_path
 {
     my ( $filesref ) = @_;
 
-    foreach $onefile ( @{$filesref} )
+    my $error = 0;
+    foreach my $onefile ( @{$filesref} )
     {
-        installer::logger::print_message( "...... searching $onefile ..." );
+        $installer::logger::Info->printf("...... searching %s ...\n", $onefile);
 
         my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $installer::globals::patharray , 0);
 
@@ -54,7 +57,7 @@ sub check_needed_files_in_path
         }
         else
         {
-            installer::logger::print_message( "\tFound: $$fileref\n" );
+            $installer::logger::Info->print( "\tFound: $$fileref\n" );
         }
     }
 
@@ -126,7 +129,7 @@ sub check_system_path
 
     foreach $onefile ( @needed_files_in_path )
     {
-        installer::logger::print_message( "...... searching $onefile ..." );
+        $installer::logger::Info->printf("...... searching %s ...\n", $onefile);
 
         my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath_classic(\$onefile, $patharrayref , 0);
 
@@ -137,7 +140,7 @@ sub check_system_path
         }
         else
         {
-            installer::logger::print_message( "\tFound: $$fileref\n" );
+            $installer::logger::Info->print( "\tFound: $$fileref\n" );
             # Saving the absolut path for msitran.exe. This is required for the determination of the checksum.
             if ( $onefile eq "msitran.exe" ) { $installer::globals::msitranpath = $$fileref; }
         }
@@ -180,7 +183,7 @@ sub check_system_path
     {
         $installer::globals::upx_in_path = 1;
         $installer::globals::upxfile = $$upxfileref;
-        installer::logger::print_message( "\tFound: $$upxfileref\n" );
+        $installer::logger::Info->print( "\tFound: $$upxfileref\n" );
     }
 
 }
@@ -204,13 +207,11 @@ sub get_makecab_version
 
     if ($returnvalue)
     {
-        $infoline = "ERROR: Could not execute \"$systemcall\"!\n";
-        push( @installer::globals::globallogfileinfo, $infoline);
+        $installer::logger::Global->printf("ERROR: Could not execute \"%s\"!\n", $systemcall);
     }
     else
     {
-        $infoline = "Success: Executed \"$systemcall\" successfully!\n";
-        push( @installer::globals::globallogfileinfo, $infoline);
+        $installer::logger::Global->printf("Success: Executed \"%s\" successfully!\n", $systemcall);
 
         my $versionline = "";
 
@@ -223,8 +224,7 @@ sub get_makecab_version
             }
         }
 
-        $infoline = $versionline;
-        push( @installer::globals::globallogfileinfo, $infoline);
+        $installer::logger::Global->printf("%s\n", $versionline);
 
         if ( $versionline =~ /\bVersion\b\s+(\d+[\d\.]+\d+)\s+/ )
         {
@@ -238,8 +238,7 @@ sub get_makecab_version
             $makecabversion = $1;
         }
 
-        $infoline = "Using version: " . $makecabversion . "\n";
-        push( @installer::globals::globallogfileinfo, $infoline);
+        $installer::logger::Global->printf("Using version: %s\n", $makecabversion);
     }
 
     return $makecabversion;
@@ -258,8 +257,7 @@ sub check_makecab_version
 
     my $makecabversion = get_makecab_version();
 
-    my $infoline = "Tested version: " . $installer::globals::controlledmakecabversion . "\n";

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list