Another one related to fdo#39747.

The file solenv/bin/modules/installer/configuration.pm isn't used at
all currently.  (I see that it was used for a while back in 2004 by
make_installer.pl.)  This patch drops the file.

LGPLv3+/MPL

Jordan Ayers
From fc1a7ebdb81cfb927f80a4ba4fb625a40840263f Mon Sep 17 00:00:00 2001
From: Jordan Ayers <jordan.ay...@gmail.com>
Date: Mon, 22 Aug 2011 23:42:00 -0500
Subject: [PATCH] Remove unused perl module.

---
 solenv/bin/modules/installer/configuration.pm |  896 -------------------------
 1 files changed, 0 insertions(+), 896 deletions(-)
 delete mode 100644 solenv/bin/modules/installer/configuration.pm

diff --git a/solenv/bin/modules/installer/configuration.pm b/solenv/bin/modules/installer/configuration.pm
deleted file mode 100644
index 0fb587f..0000000
--- a/solenv/bin/modules/installer/configuration.pm
+++ /dev/null
@@ -1,896 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org.  If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-package installer::configuration;
-
-use Cwd;
-use installer::converter;
-use installer::existence;
-use installer::exiter;
-use installer::files;
-use installer::globals;
-use installer::logger;
-use installer::remover;
-use installer::systemactions;
-
-################################################################################
-# Getting package from configurationitem (for instance: org.openoffice.Office)
-# Getting name from configurationitem (for instance: Common)
-################################################################################
-
-sub analyze_path_of_configurationitem
-{
-    my ($configurationitemsref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::analyze_path_of_configurationitem : $#{$configurationitemsref}"); }
-
-    my ($startpath, $nodes, $name, $packagename, $onenode, $first, $second, $third, $bracketnode);
-
-    for ( my $i = 0; $i <= $#{$configurationitemsref}; $i++ )
-    {
-        my $oneconfig = ${$configurationitemsref}[$i];
-        my $path = $oneconfig->{'Path'};
-
-        installer::remover::remove_leading_and_ending_slashes(\$path);  # in scp are some path beginning with "/"
-
-        if ( $path =~ /^\s*(.*?)\/(.*)\s*$/ )
-        {
-            $startpath = $1;
-            $nodes = $2;
-        }
-        else
-        {
-            installer::exiter::exit_program("ERROR: Unknown format of ConfigurationItem path: $path", "analyze_path_of_configurationitem");
-        }
-
-        # Startpath is now: org.openoffice.Setup
-        # Nodes is now: Office/Factories/com.sun.star.chart.ChartDocument
-
-        # Dividing the startpath into package (org.openoffic) and name (Setup).
-
-        $oneconfig->{'startpath'} = $startpath; # saving the startpath into the hash
-
-        if ( $startpath =~ /^\s*(\S*)\.(\S*?)\s*$/ )
-        {
-            $packagename = $1;
-            $name = $2;
-            $oneconfig->{'name'} = $name;
-            $oneconfig->{'packagename'} = $packagename;
-        }
-        else
-        {
-            installer::exiter::exit_program("ERROR: Unknown format of ConfigurationItem startpath: $startpath", "analyze_path_of_configurationitem");
-        }
-
-        # Collecting all nodes
-
-        installer::remover::remove_leading_and_ending_slashes(\$nodes);
-
-        my $counter = 1;
-
-        # Attention: Do not trust the slash
-        # Filters/Filter['StarWriter 5.0 Vorlage/Template']
-        # Menus/New/*['m10']/Title
-
-        if ( $nodes =~ /^(.*\[\')(.*\/.*)(\'\].*)$/ )
-        {
-            $first = $1;
-            $second = $2;
-            $third = $3;
-
-            $second =~ s/\//SUBSTITUTEDSLASH/g; # substituting "/" to "SUBSTITUTEDSLASH"
-            $nodes = $first . $second . $third;
-        }
-
-        while ( $nodes =~ /\// )
-        {
-            if ($nodes =~ /^\s*(.*?)\/(.*)\s*$/ )
-            {
-                $onenode = $1;
-                $nodes = $2;
-                $nodename = "node". $counter;
-
-                # Special handling for filters. Difference between:
-                # Filter['StarWriter 5.0 Vorlage/Template'] without oor:op="replace"
-                # *['m10'] with oor:op="replace"
-
-                if ( $onenode =~ /^\s*Filter\[\'(.*)\'\].*$/ ) { $oneconfig->{'isfilter'} = 1; }
-
-                # Changing the nodes with brackets:
-                # Filter['StarWriter 5.0 Vorlage/Template']
-                # *['m10']
-
-                if ( $onenode =~ /^.*\[\'(.*)\'\].*$/ )
-                {
-                    $onenode = $1;
-                    $bracketnode = "bracket_" . $nodename;
-                    $oneconfig->{$bracketnode} = 1;
-                }
-
-                $onenode =~ s/SUBSTITUTEDSLASH/\//g;    # substituting "SUBSTITUTEDSLASH" to "/"
-                $oneconfig->{$nodename} = $onenode;
-
-                # special handling for nodes "Factories"
-
-                if ( $onenode eq "Factories" ) { $oneconfig->{'factoriesnode'} = $counter; }
-                else { $oneconfig->{'factoriesnode'} = -99; }
-            }
-
-            $counter++
-        }
-
-        # and the final node
-
-        if ( $nodes =~ /^\s*Filter\[\'(.*)\'\].*$/ ) { $oneconfig->{'isfilter'} = 1; }
-
-        $nodename = "node". $counter;
-
-        if ( $nodes =~ /^.*\[\'(.*)\'\].*$/ )
-        {
-            $nodes = $1;
-            $bracketnode = "bracket_" . $nodename;
-            $oneconfig->{$bracketnode} = 1;
-        }
-
-        $nodes =~ s/SUBSTITUTEDSLASH/\//g;  # substituting "SUBSTITUTEDSLASH" to "/"
-
-        if (($nodes eq "Name") || ($nodes eq "Title"))  # isocodes below "Name" or "Title"
-        {
-            # if the last node $nodes is "Name" or "Title", it is a Property, not a name! See Common.xcu
-
-            $oneconfig->{'isisocode'} = 1;
-
-            if ( $nodes eq "Name" ) { $oneconfig->{'isname'} = 1; }
-            if ( $nodes eq "Title" ) { $oneconfig->{'istitle'} = 1; }
-            $counter--;     # decreasing the counter, because "Name" and "Title" are no nodes
-        }
-        else
-        {
-            $oneconfig->{$nodename} = $nodes;
-            $oneconfig->{'isisocode'} = 0;
-        }
-
-        # special handling for nodes "Factories"
-
-        if ( $onenode eq "Factories" ) { $oneconfig->{'factoriesnode'} = $counter; }
-        else { $oneconfig->{'factoriesnode'} = -99; }
-
-        # saving the number of nodes
-
-        $oneconfig->{'nodenumber'} = $counter;
-    }
-}
-
-####################################################################
-# Inserting the start block into a configuration file
-####################################################################
-
-sub insert_start_block_into_configfile
-{
-    my ($configfileref, $oneconfig) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::insert_start_block_into_configfile : $#{$configfileref} : $oneconfig->{'name'}"); }
-
-    my $line = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
-    push( @{$configfileref}, $line);
-
-    $line = '<oor:component-data xmlns:oor="http://openoffice.org/2001/registry"; xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:install="http://openoffice.org/2004/installation"; oor:name="FILENAME" oor:package="PACKAGENAME">' . "\n";
-    my $packagename = $oneconfig->{'packagename'};
-    my $name = $oneconfig->{'name'};
-    $line =~ s/PACKAGENAME/$packagename/g;
-    $line =~ s/FILENAME/$name/g;
-    push( @{$configfileref}, $line);
-
-    $line = "\n";
-    push( @{$configfileref}, $line);
-}
-
-####################################################################
-# Inserting the end block into a configuration file
-####################################################################
-
-sub insert_end_block_into_configfile
-{
-    my ($configfileref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::insert_end_block_into_configfile : $#{$configfileref}"); }
-
-    my $line = "\n" . '</oor:component-data>' . "\n";
-    push( @{$configfileref}, $line);
-}
-
-##############################################################
-# Getting the content of a node
-##############################################################
-
-sub get_node_content
-{
-    my ($nodeline) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::get_node_content : $nodeline"); }
-
-    my $content = "";
-
-    if ( $nodeline =~ /name\=\"(.*?)\"/ )
-    {
-        $content = $1;
-    }
-    else
-    {
-        installer::exiter::exit_program("ERROR: Impossible error in function get_node_content!", "get_node_content");
-    }
-
-    return \$content;
-}
-
-##############################################################
-# Getting the line number of an existing node
-# Return "-1" if node does not exist
-##############################################################
-
-sub get_node_line_number
-{
-    my ($nodecount, $oneconfig, $oneconfigfileref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::get_node_line_number : $nodecount : $oneconfig->{'name'} : $#{$oneconfigfileref}"); }
-
-    my $linenumber = -1;    # the node does not exists, if returnvalue is "-1"
-
-    # Attention: Take care of the two title nodes:
-    # Path=org.openoffice.Office.Common/Menus/Wizard/*['m14']/Title
-    # Path=org.openoffice.Office.Common/Menus/Wizard/*['m15']/Title
-    # -> every subnode has to be identical
-
-    # creating the allnodes string from $oneconfig
-
-    my $allnodes = "";
-
-    for ( my $i = 1; $i <= $nodecount; $i++ )
-    {
-        my $nodename = "node" . $i;
-        $allnodes .= $oneconfig->{$nodename} . "/";
-    }
-
-    installer::remover::remove_leading_and_ending_slashes(\$allnodes);  # exactly this string has to be found  in the following iteration
-
-    # Iterating over the already built configuration file
-
-    my @allnodes = ();
-
-    for ( my $i = 0; $i <= $#{$oneconfigfileref}; $i++ )
-    {
-        my $line = ${$oneconfigfileref}[$i];
-        installer::remover::remove_leading_and_ending_whitespaces(\$line);
-        my $nodechanged = 0;
-
-        if ( $line =~ /^\s*\<node/ )    # opening node
-        {
-            $nodechanged = 1;
-            my $nodecontentref = get_node_content($line);
-            push(@allnodes, $$nodecontentref);  # collecting all nodes in an array
-        }
-
-        if ( $line =~ /^\s*\<\/node/ )  # ending node
-        {
-            $nodechanged = 1;
-            pop(@allnodes);     # removing the last node from the array
-        }
-
-        if (( $nodechanged ) && ($#allnodes > -1))  # a node was found and the node array is not empty
-        {
-            # creating the string to compare with the string $allnodes
-
-            my $nodestring = "";
-
-            for ( my $j = 0; $j <= $#allnodes; $j++ )
-            {
-                $nodestring .= $allnodes[$j] . "/";
-            }
-
-            installer::remover::remove_leading_and_ending_slashes(\$nodestring);
-
-            if ( $nodestring eq $allnodes )
-            {
-                # that is exactly the same node
-
-                $linenumber = $i;
-                $linenumber++;  # increasing the linenumber
-                last;
-
-            }
-        }
-    }
-
-    return $linenumber;
-}
-
-##############################################################
-# Inserting one configurationitem into the configurationfile
-##############################################################
-
-sub insert_into_config_file
-{
-    my ($oneconfig, $oneconfigfileref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::insert_into_config_file : $oneconfig->{'nodenumber'} : $#{$oneconfigfileref}"); }
-
-    my ($nodename, $nodecontent, $newnodeline, $bracketkey, $line, $insertline);
-
-    # interpreting the nodes, keys and values
-
-    my $nodeline = '<node oor:name="NODECONTENT" REPLACEPART >' . "\n";
-    my $propline = '<prop oor:name="KEYCONTENT" REPLACEPART TYPEPART>' . "\n";
-    my $valueline = '<value SEPARATORPART>VALUECONTENT</value>' . "\n";
-    my $langvalueline = '<value xml:lang="SAVEDLANGUAGE">VALUECONTENT</value>' . "\n";
-    my $propendline = '</prop>' . "\n";
-    my $nodeendline = '</node>' . "\n";
-
-    my $replacepart = 'oor:op="replace"';
-    my $typepart = 'oor:type="xs:VALUETYPE"';   # VALUETYPE can be "string", "boolean", ...
-
-    my $nodecount = $oneconfig->{'nodenumber'};
-    my $styles = $oneconfig->{'Styles'};
-
-    for ( my $i = 1; $i <= $nodecount; $i++ )
-    {
-        $insertline = get_node_line_number($i, $oneconfig, $oneconfigfileref);
-
-        if ( $insertline == -1) # if true, the node does not exist
-        {
-            $nodename = "node" . $i;
-            $nodecontent = $oneconfig->{$nodename};
-            $newnodeline = $nodeline;
-
-            $newnodeline =~ s/NODECONTENT/$nodecontent/g;
-
-            # Case1:
-            # Nodes with brackets, need the replacepart 'oor:op="replace"'
-            # Bracket node is set for each node with: bracket_node1=1, bracket_node2=1, ...
-            # Case a: <node oor:name="m0" oor:op="replace">     (Common.xcu needs oor:op="replace")
-            # Case b: <node oor:name="Ami Pro 1.x-3.1 (W4W)">   (TypeDetection.xcu does not need oor:op="replace")
-            # For case b introducting a special case for Filters
-
-            $bracketkey = "bracket_" . $nodename;
-
-            my $localbracketkey = 0;
-
-            if ( $oneconfig->{$bracketkey} ) { $localbracketkey = $oneconfig->{$bracketkey}; }
-
-            if ( $localbracketkey == 1 )    # 'oor:op="replace"' is needed
-            {
-                my $isfilter = 0;
-                if ( $oneconfig->{'isfilter'} ) { $isfilter = $oneconfig->{'isfilter'}; }
-
-                if ( $isfilter == 1 )   # this is a filter
-                {
-                    $newnodeline =~ s/REPLACEPART//;
-                }
-                else
-                {
-                    $newnodeline =~ s/REPLACEPART/$replacepart/;
-                }
-
-                $newnodeline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-            }
-
-            # Case2:
-            # Nodes below a Node "Factories", also need the replacepart 'oor:op="replace"'
-            # This is saved in $oneconfig->{'factoriesnode'}. If not set, the value is "-99"
-
-            if ( $i == $oneconfig->{'factoriesnode'} )
-            {
-                $newnodeline =~ s/REPLACEPART/$replacepart/;
-                $newnodeline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-            }
-
-            # Case3:
-            # In all other cases, REPLACEPART in nodes can be removed
-
-            $newnodeline =~ s/REPLACEPART//;
-            $newnodeline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-
-            # Finding the correct place for inserting the node
-
-            if ( $i == 1 )  # this is a toplevel node
-            {
-                push(@{$oneconfigfileref}, $newnodeline);
-                push(@{$oneconfigfileref}, $nodeendline);
-            }
-            else
-            {
-                # searching for the parent node
-
-                my $parentnumber = $i-1;
-                $insertline = get_node_line_number($parentnumber, $oneconfig, $oneconfigfileref);
-                splice(@{$oneconfigfileref}, $insertline, 0, ($newnodeline, $nodeendline));
-            }
-        }
-    }
-
-    # Setting variables $isbracketnode and $isfactorynode for the properties
-
-
-    my $isbracketnode = 0;
-    my $isfactorynode = 0;
-
-    for ( my $i = 1; $i <= $nodecount; $i++ )
-    {
-        $nodename = "node" . $i;
-        $bracketkey = "bracket_" . $nodename;
-
-        my $localbracketkey = 0;
-        if ( $oneconfig->{$bracketkey} ) { $localbracketkey = $oneconfig->{$bracketkey}; }
-
-        if ( $localbracketkey == 1 ) { $isbracketnode = 1;  }
-        if ( $i == $oneconfig->{'factoriesnode'} ) { $isfactorynode = 1; }
-    }
-
-    # now all nodes exist, and the key and value can be inserted into the configfile
-    # the next line contains the key, for instance: <prop oor:name="UseDefaultMailer" oor:type="xs:boolean">
-    # my $propline = '<prop oor:name="KEYCONTENT" REPLACEPART TYPEPART>' . "\n";
-    # The type is only needed, if a replace is set.
-
-    my $newpropline = $propline;
-
-    # Replacement of KEYCONTENT, REPLACEPART and TYPEPART
-
-    # Case 1:
-    # Properties with oor:name="Name" (Common.xcu) are simply <prop oor:name="Name">
-    # The information about such a property is stored in $oneconfig->{'isisocode'}
-
-    if ( $oneconfig->{'isisocode'} )
-    {
-        if ( $oneconfig->{'isname'} ) { $newpropline =~ s/KEYCONTENT/Name/; }       # The property name is always "Name"
-        if ( $oneconfig->{'istitle'} ) { $newpropline =~ s/KEYCONTENT/Title/; }     # The property name is always "Title"
-        $newpropline =~ s/REPLACEPART//;
-        $newpropline =~ s/TYPEPART//;
-        $newpropline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-    }
-
-    # Begin of all other cases
-
-    my $key = $oneconfig->{'Key'};
-    $newpropline =~ s/KEYCONTENT/$key/;
-
-    my $valuetype;
-
-    if ( $styles =~ /CFG_STRING\b/ ) { $valuetype = "string"; }
-    elsif ( $styles =~ /CFG_NUMERIC/ ) { $valuetype = "int"; }
-    elsif ( $styles =~ /CFG_BOOLEAN/ ) { $valuetype = "boolean"; }
-    elsif ( $styles =~ /CFG_STRINGLIST/ ) { $valuetype = "string-list"; }
-    else
-    {
-        installer::exiter::exit_program("ERROR: Unknown configuration value type: $styles", "insert_into_config_file");
-    }
-
-    # Case 2:
-    # Properties below a node "Factories" do not need a 'oor:op="replace"' and a 'oor:type="xs:VALUETYPE"'
-
-    if ( $isfactorynode )
-    {
-        $newpropline =~ s/REPLACEPART//;
-        $newpropline =~ s/TYPEPART//;
-        $newpropline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-    }
-
-    # Case 3:
-    # Properties below a "bracket" node do not need a 'oor:op="replace"', except they are iso-codes
-    # Assumption here: They are multilingual
-
-    if ( $isbracketnode )
-    {
-        my $localtypepart = $typepart;
-        $localtypepart =~ s/VALUETYPE/$valuetype/;
-        $newpropline =~ s/TYPEPART/$localtypepart/;
-
-        if ( $oneconfig->{'ismultilingual'} )   # This is solved by "Name" and "Title"
-        {
-            $newpropline =~ s/REPLACEPART/$replacepart/;
-        }
-        else
-        {
-            $newpropline =~ s/REPLACEPART//;
-        }
-
-        $newpropline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-    }
-
-    # Case 4:
-    # if the flag CREATE is set, the properties get 'oor:op="replace"' and 'oor:type="xs:VALUETYPE"'
-
-    if (( $styles =~ /\bCREATE\b/ ) && (!($isbracketnode)))
-    {
-        # $typepart is 'oor:type="xs:VALUETYPE"';
-        # VALUETYPE can be "string", "boolean", ...
-        my $localtypepart = $typepart;
-        $localtypepart =~ s/VALUETYPE/$valuetype/;
-
-        $newpropline =~ s/TYPEPART/$localtypepart/;
-        $newpropline =~ s/REPLACEPART/$replacepart/;
-        $newpropline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-    }
-
-    # Case 5:
-    # all other ConfigurationItems do not need 'oor:op="replace"' and 'oor:type="xs:VALUETYPE"'
-
-    $newpropline =~ s/REPLACEPART//;
-    $newpropline =~ s/TYPEPART//;
-    $newpropline =~ s/\s*\>/\>/;    # removing resulting whitespaces
-
-    # finally the value can be set
-
-    my $value = $oneconfig->{'Value'};
-
-    # Some values in setup script are written during installation process by the setup. These
-    # have values like "<title>". This will lead to an error, because of the brackets. Therefore the
-    # brackets have to be removed.
-
-    # ToDo: Substituting the setup replace variables
-
-    $value =~ s/^\s*\<//;
-    $value =~ s/\>\s*$//;
-
-    # Deal with list separators
-    my $separatorpart = '';
-    if ( ($valuetype eq "string-list") && ($value =~ /\|/) )
-    {
-        $separatorpart = 'oor:separator="|"';
-    }
-
-    # Fake: substituting german umlauts
-
-    $value =~ s/\ä/ae/;
-    $value =~ s/\ö/oe/;
-    $value =~ s/\ü/ue/;
-    $value =~ s/\Ä/AE/;
-    $value =~ s/\Ö/OE/;
-    $value =~ s/\Ü/UE/;
-
-    my $newvalueline;
-
-    if (!($oneconfig->{'isisocode'} ))  # this is the simpe case
-    {
-        $newvalueline = $valueline;
-        $newvalueline =~ s/VALUECONTENT/$value/g;
-        $newvalueline =~ s/SEPARATORPART/$separatorpart/;
-    }
-    else
-    {
-        $newvalueline = $langvalueline;
-        $newvalueline =~ s/VALUECONTENT/$value/;
-        my $savedlanguage = $oneconfig->{'Key'};
-        $newvalueline =~ s/SAVEDLANGUAGE/$savedlanguage/;
-    }
-
-    # For language dependent values, it is possible, that the property already exist.
-    # In this case the prop must not be created again and only the value has to be included:
-    # <prop oor:name="Name">
-    #  <value xml:lang="de">OpenOffice.org 2.0 Diagramm</value>
-    #  <value xml:lang="en-US">OpenOffice.org 2.0 Chart</value>
-    # </prop>
-
-    # The key has to be written after the line, containing the complete node
-
-    $insertline = get_node_line_number($nodecount, $oneconfig, $oneconfigfileref);
-
-    if ( $oneconfig->{'ismultilingual'} )
-    {
-        if ( $newpropline eq ${$oneconfigfileref}[$insertline] )
-        {
-            if (!($newvalueline eq ${$oneconfigfileref}[$insertline+1]))    # only include, if the value not already exists (example: value="FALSE" for many languages)
-            {
-                splice(@{$oneconfigfileref}, $insertline+1, 0, ($newvalueline));    # only the value needs to be added
-            }
-        }
-        else
-        {
-            splice(@{$oneconfigfileref}, $insertline, 0, ($newpropline, $newvalueline, $propendline));
-        }
-    }
-    else
-    {
-        splice(@{$oneconfigfileref}, $insertline, 0, ($newpropline, $newvalueline, $propendline));
-    }
-
-    return $oneconfigfileref;
-}
-
-##########################################################
-# Inserting tabs for better view into configuration file
-##########################################################
-
-sub insert_tabs_into_configfile
-{
-    my ($configfileref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::insert_tabs_into_configfile : $#{$configfileref}"); }
-
-    my $counter = 0;
-
-    for ( my $i = 0; $i <= $#{$configfileref}; $i++ )
-    {
-        my $line = ${$configfileref}[$i];
-        my $linebefore = ${$configfileref}[$i-1];
-
-        if (( $line =~ /^\s*\<node/ ) || ( $line =~ /^\s*\<prop/ ))
-        {
-            if ((!( $linebefore =~ /^\s*\<\/node/ )) && (!( $linebefore =~ /^\s*\<\/prop/ )))       # do not increase after "</node" and after "</prop"
-            {
-                $counter++;
-            }
-        }
-
-        if ( $line =~ /^\s*\<value/ )
-        {
-            if (!($linebefore =~ /^\s*\<value/ ))       # do not increase counter with "<value>" after "<value>" (multilingual configitems)
-            {
-                $counter++;
-            }
-        }
-
-        if (( $line =~ /^\s*\<\/node\>/ ) || ( $line =~ /^\s*\<\/prop\>/ ))
-        {
-            if ((!( $linebefore =~ /^\s*\<node/ )) && (!( $linebefore =~ /^\s*\<prop/ )))       # do not decrease after "<node" and after "<prop"
-            {
-                $counter--;
-            }
-        }
-
-        if ($counter > 0)
-        {
-            for ( my $j = 0; $j < $counter; $j++ )
-            {
-                $line = "\t" . $line;
-            }
-        }
-
-        ${$configfileref}[$i] = $line;
-    }
-}
-
-######################################################################
-# Collecting all different configuration items (Files and Modules)
-######################################################################
-
-sub collect_all_configuration_items
-{
-    my ($configurationitemsref, $item) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::collect_all_configuration_items : $#{$configurationitemsref} : $item"); }
-
-    my @allitems = ();
-
-    for ( my $i = 0; $i <= $#{$configurationitemsref}; $i++ )
-    {
-        my $oneconfig = ${$configurationitemsref}[$i];
-
-        if (! installer::existence::exists_in_array($oneconfig->{$item}, \@allitems))
-        {
-            push(@allitems, $oneconfig->{$item});
-        }
-    }
-
-    return \@allitems;
-}
-
-######################################################################
-# Collecting all module specific configuration items
-######################################################################
-
-sub get_all_configitems_at_module
-{
-    my ($moduleid, $configurationitemsref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::get_all_configitems_at_module : $moduleid : $#{$configurationitemsref}"); }
-
-    my @moduleconfigurationitems = ();
-
-    for ( my $i = 0; $i <= $#{$configurationitemsref}; $i++ )
-    {
-        my $oneconfig = ${$configurationitemsref}[$i];
-
-        if ( $oneconfig->{'ModuleID'} eq $moduleid )
-        {
-            push(@moduleconfigurationitems, $oneconfig);
-        }
-    }
-
-    return \@moduleconfigurationitems;
-}
-
-#######################################################
-# Saving and zipping the created configurationfile
-#######################################################
-
-sub save_and_zip_configfile
-{
-    my ($oneconfigfileref, $onefile, $onemodule, $configdir) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::save_and_zip_configfile : $#{$oneconfigfileref} : $onefile : $onemodule : $configdir"); }
-
-    my $savefilename = $onefile;
-    $savefilename =~ s/\./\_/g;
-    $savefilename = $savefilename . "_" . $onemodule;
-    $savefilename = $savefilename . ".xcu";
-    my $shortsavefilename = $savefilename;
-
-    $savefilename = $configdir . $installer::globals::separator . $savefilename;
-
-    installer::files::save_file($savefilename, $oneconfigfileref);
-
-    # zipping the configfile
-
-    my $returnvalue = 1;
-
-    my $zipfilename = $shortsavefilename;
-    $zipfilename =~ s/\.xcu/\.zip/;
-
-    my $currentdir = cwd();
-    if ( $installer::globals::iswin ) { $currentdir =~ s/\//\\/g; }
-
-    chdir($configdir);
-
-     my $systemcall = "$installer::globals::zippath -q -m $zipfilename $shortsavefilename";
-    $returnvalue = system($systemcall);
-
-    chdir($currentdir);
-
-    my $infoline = "Systemcall: $systemcall\n";
-    push( @installer::globals::logfileinfo, $infoline);
-
-    if ($returnvalue)
-    {
-        $infoline = "ERROR: Could not zip $savefilename to $zipfilename\n";
-    }
-    else
-    {
-        $infoline = "SUCCESS: Zipped file $savefilename to $zipfilename\n";
-    }
-    push( @installer::globals::logfileinfo, $infoline);
-
-    return $zipfilename;
-}
-
-#####################################################################
-# Adding the newly created configuration file into the file list
-#####################################################################
-
-sub add_zipfile_into_filelist
-{
-    my ($zipfilename, $configdir, $filesarrayref, $onemodule) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::add_zipfile_into_filelist: $zipfilename : $configdir : $#{$filesarrayref} : $onemodule"); }
-
-    my $longzipfilename = $configdir . $installer::globals::separator . $zipfilename;
-    my $gid = "gid_" . $zipfilename;
-    $gid =~ s/\./\_/g;
-
-    my %configfile = ();
-
-    # Taking the base data from the "gid_File_Lib_Vcl"
-
-    my $vclgid = "gid_File_Lib_Vcl";
-    my $vclfile = installer::existence::get_specified_file($filesarrayref, $vclgid);
-
-    # copying all base data
-    installer::converter::copy_item_object($vclfile, \%configfile);
-
-    # and overriding all new data
-    $configfile{'ismultilingual'} = 0;
-    $configfile{'sourcepath'} = $longzipfilename;
-    $configfile{'Name'} = $zipfilename;
-    $configfile{'UnixRights'} = "644";
-    $configfile{'gid'} = $gid;
-    $configfile{'Dir'} = "gid_Dir_Share_Uno_Packages";
-    $configfile{'destination'} = "share" . $installer::globals::separator . "uno_packages" . $installer::globals::separator . $zipfilename;
-    $configfile{'modules'} = $onemodule;    # assigning the file to the correct module!
-
-    push(@{$filesarrayref}, \%configfile);
-}
-
-#######################################################
-# Creating configuration files from configurationitems
-#######################################################
-
-sub create_configuration_files
-{
-    my ($configurationitemsref, $filesarrayref, $languagestringref) = @_;
-
-    if ( $installer::globals::debug ) { installer::logger::debuginfo("installer::configuration::create_configuration_files: $#{$configurationitemsref} : $#{$filesarrayref} : $$languagestringref"); }
-
-    installer::logger::include_header_into_logfile("Creating configuration files:");
-
-    # creating the directory
-
-    my $configdir = installer::systemactions::create_directories("configfiles", $languagestringref);
-
-    $configdir = installer::converter::make_path_conform($configdir);
-
-    # collecting an array of all modules
-    my $allmodules = collect_all_configuration_items($configurationitemsref, "ModuleID");
-
-    # iterating over all modules
-
-    for ( my $i = 0; $i <= $#{$allmodules}; $i++ )
-    {
-        my $onemodule = ${$allmodules}[$i];
-
-        my $moduleconfigitems = get_all_configitems_at_module($onemodule, $configurationitemsref);
-
-        # collecting an array of all "startpath". This are all different files (org.openoffice.Office.Common).
-        my $allfiles = collect_all_configuration_items($moduleconfigitems, "startpath");
-
-        # iteration over all files
-
-        for ( my $j = 0; $j <= $#{$allfiles}; $j++ )
-        {
-            my $onefile = ${$allfiles}[$j];
-
-            my @oneconfigfile = ();
-            my $oneconfigfileref = \@oneconfigfile;
-
-            my $startblockwritten = 0;
-
-            for ( my $k = 0; $k <= $#{$moduleconfigitems}; $k++ )
-            {
-                my $oneconfig = ${$moduleconfigitems}[$k];
-
-                my $startpath = $oneconfig->{'startpath'};
-
-                if ($startpath eq $onefile)
-                {
-                    if (!($startblockwritten))  # writing some global lines into the xcu file
-                    {
-                        insert_start_block_into_configfile($oneconfigfileref, $oneconfig);
-                        $startblockwritten = 1;
-                    }
-
-                    $oneconfigfileref = insert_into_config_file($oneconfig, $oneconfigfileref);
-                }
-            }
-
-            insert_end_block_into_configfile($oneconfigfileref);
-
-            # inserting tabs for nice appearance
-            insert_tabs_into_configfile($oneconfigfileref);
-
-            # saving the configfile
-            my $zipfilename = save_and_zip_configfile($oneconfigfileref, $onefile, $onemodule, $configdir);
-
-            # adding the zipped configfile to the list of installed files
-            # Some data are set now, others are taken from the file "soffice.exe" ("soffice.bin")
-
-            add_zipfile_into_filelist($zipfilename, $configdir, $filesarrayref, $onemodule);
-        }
-    }
-
-    my $infoline = "\n";
-    push( @installer::globals::logfileinfo, $infoline);
-
-}
-
-1;
-- 
1.7.4.1

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to