1*cdf0e10cSrcweir#************************************************************************* 2*cdf0e10cSrcweir# 3*cdf0e10cSrcweir# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir# 5*cdf0e10cSrcweir# Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir# 7*cdf0e10cSrcweir# OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir# 9*cdf0e10cSrcweir# This file is part of OpenOffice.org. 10*cdf0e10cSrcweir# 11*cdf0e10cSrcweir# OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir# it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir# only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir# 15*cdf0e10cSrcweir# OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir# but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir# GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir# (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir# 21*cdf0e10cSrcweir# You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir# version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir# <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir# for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir# 26*cdf0e10cSrcweir#************************************************************************* 27*cdf0e10cSrcweir 28*cdf0e10cSrcweirpackage installer::windows::createfolder; 29*cdf0e10cSrcweir 30*cdf0e10cSrcweiruse installer::existence; 31*cdf0e10cSrcweiruse installer::exiter; 32*cdf0e10cSrcweiruse installer::files; 33*cdf0e10cSrcweiruse installer::globals; 34*cdf0e10cSrcweiruse installer::windows::idtglobal; 35*cdf0e10cSrcweir 36*cdf0e10cSrcweir############################################################## 37*cdf0e10cSrcweir# Returning directory for createfolder table. 38*cdf0e10cSrcweir############################################################## 39*cdf0e10cSrcweir 40*cdf0e10cSrcweirsub get_createfolder_directory 41*cdf0e10cSrcweir{ 42*cdf0e10cSrcweir my ($onedir) = @_; 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir my $uniquename = $onedir->{'uniquename'}; 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir return $uniquename; 47*cdf0e10cSrcweir} 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir############################################################## 50*cdf0e10cSrcweir# Searching the correct file for language pack directories. 51*cdf0e10cSrcweir############################################################## 52*cdf0e10cSrcweir 53*cdf0e10cSrcweirsub get_languagepack_file 54*cdf0e10cSrcweir{ 55*cdf0e10cSrcweir my ($filesref, $onedir) = @_; 56*cdf0e10cSrcweir 57*cdf0e10cSrcweir my $language = $onedir->{'specificlanguage'}; 58*cdf0e10cSrcweir my $foundfile = 0; 59*cdf0e10cSrcweir my $onefile = ""; 60*cdf0e10cSrcweir 61*cdf0e10cSrcweir for ( my $i = 0; $i <= $#{$filesref}; $i++ ) 62*cdf0e10cSrcweir { 63*cdf0e10cSrcweir $onefile = ${$filesref}[$i]; 64*cdf0e10cSrcweir 65*cdf0e10cSrcweir if ( $onefile->{'specificlanguage'} eq $onedir->{'specificlanguage'} ) 66*cdf0e10cSrcweir { 67*cdf0e10cSrcweir $foundfile = 1; 68*cdf0e10cSrcweir last; 69*cdf0e10cSrcweir } 70*cdf0e10cSrcweir } 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir if ( ! $foundfile ) { installer::exiter::exit_program("ERROR: No file with correct language found (language pack build)!", "get_languagepack_file"); } 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir return $onefile; 75*cdf0e10cSrcweir} 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir############################################################## 78*cdf0e10cSrcweir# Returning component for createfolder table. 79*cdf0e10cSrcweir############################################################## 80*cdf0e10cSrcweir 81*cdf0e10cSrcweirsub get_createfolder_component 82*cdf0e10cSrcweir{ 83*cdf0e10cSrcweir my ($onedir, $filesref, $allvariableshashref) = @_; 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir # Directories do not belong to a module. 86*cdf0e10cSrcweir # Therefore they can only belong to the root module and 87*cdf0e10cSrcweir # will be added to a component at the root module. 88*cdf0e10cSrcweir # All directories will be added to the component 89*cdf0e10cSrcweir # containing the file $allvariableshashref->{'GLOBALFILEGID'} 90*cdf0e10cSrcweir 91*cdf0e10cSrcweir if ( ! $allvariableshashref->{'GLOBALFILEGID'} ) { installer::exiter::exit_program("ERROR: GLOBALFILEGID must be defined in list file!", "get_createfolder_component"); } 92*cdf0e10cSrcweir if (( $installer::globals::patch ) && ( ! $allvariableshashref->{'GLOBALFILEGID'} )) { installer::exiter::exit_program("ERROR: GLOBALPATCHFILEGID must be defined in list file!", "get_createfolder_component"); } 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir my $globalfilegid = $allvariableshashref->{'GLOBALFILEGID'}; 95*cdf0e10cSrcweir if ( $installer::globals::patch ) { $globalfilegid = $allvariableshashref->{'GLOBALPATCHFILEGID'}; } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir my $onefile = ""; 98*cdf0e10cSrcweir if ( $installer::globals::languagepack ) { $onefile = get_languagepack_file($filesref, $onedir); } 99*cdf0e10cSrcweir else { $onefile = installer::existence::get_specified_file($filesref, $globalfilegid); } 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir return $onefile->{'componentname'}; 102*cdf0e10cSrcweir} 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir#################################################################################### 105*cdf0e10cSrcweir# Creating the file CreateFo.idt dynamically for creation of empty directories 106*cdf0e10cSrcweir# Content: 107*cdf0e10cSrcweir# Directory_ Component_ 108*cdf0e10cSrcweir#################################################################################### 109*cdf0e10cSrcweir 110*cdf0e10cSrcweirsub create_createfolder_table 111*cdf0e10cSrcweir{ 112*cdf0e10cSrcweir my ($dirref, $filesref, $basedir, $allvariableshashref) = @_; 113*cdf0e10cSrcweir 114*cdf0e10cSrcweir my @createfoldertable = (); 115*cdf0e10cSrcweir 116*cdf0e10cSrcweir my $infoline; 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir installer::windows::idtglobal::write_idt_header(\@createfoldertable, "createfolder"); 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir for ( my $i = 0; $i <= $#{$dirref}; $i++ ) 121*cdf0e10cSrcweir { 122*cdf0e10cSrcweir my $onedir = ${$dirref}[$i]; 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir # language packs get only language dependent directories 125*cdf0e10cSrcweir if (( $installer::globals::languagepack ) && ( $onedir->{'specificlanguage'} eq "" )) { next }; 126*cdf0e10cSrcweir 127*cdf0e10cSrcweir my $styles = ""; 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir if ( $onedir->{'Styles'} ) { $styles = $onedir->{'Styles'}; } 130*cdf0e10cSrcweir 131*cdf0e10cSrcweir if ( $styles =~ /\bCREATE\b/ ) 132*cdf0e10cSrcweir { 133*cdf0e10cSrcweir my %directory = (); 134*cdf0e10cSrcweir 135*cdf0e10cSrcweir $directory{'Directory_'} = get_createfolder_directory($onedir); 136*cdf0e10cSrcweir $directory{'Component_'} = get_createfolder_component($onedir, $filesref, $allvariableshashref); 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir my $oneline = $directory{'Directory_'} . "\t" . $directory{'Component_'} . "\n"; 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir push(@createfoldertable, $oneline); 141*cdf0e10cSrcweir } 142*cdf0e10cSrcweir } 143*cdf0e10cSrcweir 144*cdf0e10cSrcweir # Saving the file 145*cdf0e10cSrcweir 146*cdf0e10cSrcweir my $createfoldertablename = $basedir . $installer::globals::separator . "CreateFo.idt"; 147*cdf0e10cSrcweir installer::files::save_file($createfoldertablename ,\@createfoldertable); 148*cdf0e10cSrcweir $infoline = "Created idt file: $createfoldertablename\n"; 149*cdf0e10cSrcweir push(@installer::globals::logfileinfo, $infoline); 150*cdf0e10cSrcweir 151*cdf0e10cSrcweir} 152*cdf0e10cSrcweir 153*cdf0e10cSrcweir1;