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;