xref: /trunk/main/solenv/bin/modules/par2script/work.pm (revision cdf0e10c)
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*cdf0e10cSrcweir
29*cdf0e10cSrcweirpackage par2script::work;
30*cdf0e10cSrcweir
31*cdf0e10cSrcweiruse par2script::existence;
32*cdf0e10cSrcweiruse par2script::globals;
33*cdf0e10cSrcweiruse par2script::remover;
34*cdf0e10cSrcweir
35*cdf0e10cSrcweir############################################
36*cdf0e10cSrcweir# par2script working module
37*cdf0e10cSrcweir############################################
38*cdf0e10cSrcweir
39*cdf0e10cSrcweirsub analyze_comma_separated_list
40*cdf0e10cSrcweir{
41*cdf0e10cSrcweir	my ($list, $listref) = @_;	# second parameter is optional
42*cdf0e10cSrcweir
43*cdf0e10cSrcweir	my @list = ();
44*cdf0e10cSrcweir	my $locallistref;
45*cdf0e10cSrcweir
46*cdf0e10cSrcweir	if (!( $listref )) { $locallistref = \@list; }
47*cdf0e10cSrcweir	else { $locallistref = $listref; }
48*cdf0e10cSrcweir
49*cdf0e10cSrcweir	par2script::remover::remove_leading_and_ending_comma(\$list);
50*cdf0e10cSrcweir	par2script::remover::remove_leading_and_ending_whitespaces(\$list);
51*cdf0e10cSrcweir
52*cdf0e10cSrcweir	while ( $list =~ /^\s*(.*?)\s*\,\s*(.*)\s*$/ )
53*cdf0e10cSrcweir	{
54*cdf0e10cSrcweir		my $oneentry = $1;
55*cdf0e10cSrcweir		$list = $2;
56*cdf0e10cSrcweir		par2script::remover::remove_leading_and_ending_whitespaces(\$oneentry);
57*cdf0e10cSrcweir		push(@{$locallistref}, $oneentry);
58*cdf0e10cSrcweir	}
59*cdf0e10cSrcweir
60*cdf0e10cSrcweir	# the last entry
61*cdf0e10cSrcweir
62*cdf0e10cSrcweir	par2script::remover::remove_leading_and_ending_whitespaces(\$list);
63*cdf0e10cSrcweir	push(@{$locallistref}, $list);
64*cdf0e10cSrcweir
65*cdf0e10cSrcweir	return $locallistref;
66*cdf0e10cSrcweir}
67*cdf0e10cSrcweir
68*cdf0e10cSrcweir############################################
69*cdf0e10cSrcweir# setting list of include pathes
70*cdf0e10cSrcweir############################################
71*cdf0e10cSrcweir
72*cdf0e10cSrcweirsub setincludes
73*cdf0e10cSrcweir{
74*cdf0e10cSrcweir	my ($list) = @_;
75*cdf0e10cSrcweir
76*cdf0e10cSrcweir	# input is the comma separated list of include pathes
77*cdf0e10cSrcweir
78*cdf0e10cSrcweir	my $includes = analyze_comma_separated_list($list);
79*cdf0e10cSrcweir
80*cdf0e10cSrcweir	return $includes;
81*cdf0e10cSrcweir}
82*cdf0e10cSrcweir
83*cdf0e10cSrcweir############################################
84*cdf0e10cSrcweir# setting list of all par files
85*cdf0e10cSrcweir############################################
86*cdf0e10cSrcweir
87*cdf0e10cSrcweirsub setparfiles
88*cdf0e10cSrcweir{
89*cdf0e10cSrcweir	my ($filename) = @_;
90*cdf0e10cSrcweir
91*cdf0e10cSrcweir	# input is the name of the list file
92*cdf0e10cSrcweir	$filename =~ s/\@//;	# removing the leading \@
93*cdf0e10cSrcweir
94*cdf0e10cSrcweir	my $filecontent = par2script::files::read_file($filename);
95*cdf0e10cSrcweir
96*cdf0e10cSrcweir	my @parfiles = ();
97*cdf0e10cSrcweir	my $parfilesref = \@parfiles;
98*cdf0e10cSrcweir
99*cdf0e10cSrcweir	foreach ( @{$filecontent} ) { $parfilesref = analyze_comma_separated_list($_, $parfilesref); }
100*cdf0e10cSrcweir
101*cdf0e10cSrcweir	return $parfilesref;
102*cdf0e10cSrcweir}
103*cdf0e10cSrcweir
104*cdf0e10cSrcweir############################################
105*cdf0e10cSrcweir# finding the correct include path
106*cdf0e10cSrcweir# for the par files
107*cdf0e10cSrcweir############################################
108*cdf0e10cSrcweir
109*cdf0e10cSrcweirsub make_complete_pathes_for_parfiles
110*cdf0e10cSrcweir{
111*cdf0e10cSrcweir	my ($parfiles, $includes) = @_;
112*cdf0e10cSrcweir
113*cdf0e10cSrcweir	my $oneparfile;
114*cdf0e10cSrcweir
115*cdf0e10cSrcweir	foreach $oneparfile ( @{$parfiles} )
116*cdf0e10cSrcweir	{
117*cdf0e10cSrcweir		my $foundparfile = 0;
118*cdf0e10cSrcweir		my $includepath;
119*cdf0e10cSrcweir
120*cdf0e10cSrcweir		foreach $includepath ( @{$includes} )
121*cdf0e10cSrcweir		{
122*cdf0e10cSrcweir			my $parfile = "$includepath/$oneparfile";
123*cdf0e10cSrcweir
124*cdf0e10cSrcweir			if ( -f $parfile )
125*cdf0e10cSrcweir			{
126*cdf0e10cSrcweir				$foundparfile = 1;
127*cdf0e10cSrcweir				$oneparfile = $parfile;
128*cdf0e10cSrcweir				last;
129*cdf0e10cSrcweir			}
130*cdf0e10cSrcweir		}
131*cdf0e10cSrcweir
132*cdf0e10cSrcweir		if ( ! $foundparfile )
133*cdf0e10cSrcweir		{
134*cdf0e10cSrcweir			die "ERROR: Could not find parfile ${$parfiles}[$i] in includes pathes: $par2script::globals::includepathlist !\n";
135*cdf0e10cSrcweir		}
136*cdf0e10cSrcweir	}
137*cdf0e10cSrcweir}
138*cdf0e10cSrcweir
139*cdf0e10cSrcweir######################################################
140*cdf0e10cSrcweir# collecting one special item in the par files and
141*cdf0e10cSrcweir# including it into the "definitions" hash
142*cdf0e10cSrcweir######################################################
143*cdf0e10cSrcweir
144*cdf0e10cSrcweirsub collect_definitions
145*cdf0e10cSrcweir{
146*cdf0e10cSrcweir	my ($parfilecontent) = @_;
147*cdf0e10cSrcweir
148*cdf0e10cSrcweir	my $multidefinitionerror = 0;
149*cdf0e10cSrcweir	my @multidefinitiongids = ();
150*cdf0e10cSrcweir
151*cdf0e10cSrcweir
152*cdf0e10cSrcweir	foreach $oneitem ( @par2script::globals::allitems )
153*cdf0e10cSrcweir	{
154*cdf0e10cSrcweir		my $docollect = 0;
155*cdf0e10cSrcweir		my $gid = "";
156*cdf0e10cSrcweir		my %allitemhash = ();
157*cdf0e10cSrcweir
158*cdf0e10cSrcweir		for ( my $i = 0; $i <= $#{$parfilecontent}; $i++ )
159*cdf0e10cSrcweir		{
160*cdf0e10cSrcweir			my $line = ${$parfilecontent}[$i];
161*cdf0e10cSrcweir
162*cdf0e10cSrcweir			if ( $line =~ /^\s*$oneitem\s+(\w+)\s*$/ )
163*cdf0e10cSrcweir			{
164*cdf0e10cSrcweir				$gid = $1;
165*cdf0e10cSrcweir				$docollect = 1;
166*cdf0e10cSrcweir			}
167*cdf0e10cSrcweir			else
168*cdf0e10cSrcweir			{
169*cdf0e10cSrcweir				$docollect = 0;
170*cdf0e10cSrcweir			}
171*cdf0e10cSrcweir
172*cdf0e10cSrcweir			if ( $docollect )
173*cdf0e10cSrcweir			{
174*cdf0e10cSrcweir				my $currentline = $i;
175*cdf0e10cSrcweir				my %oneitemhash;
176*cdf0e10cSrcweir
177*cdf0e10cSrcweir				while (! ( ${$parfilecontent}[$currentline] =~ /^\s*End\s*$/i ) )
178*cdf0e10cSrcweir				{
179*cdf0e10cSrcweir					if ( ${$parfilecontent}[$currentline] =~ /^\s*(.+?)\s*\=\s*(.+?)\s*\;\s*$/ )	# only oneliner!
180*cdf0e10cSrcweir					{
181*cdf0e10cSrcweir						$itemkey = $1;
182*cdf0e10cSrcweir						$itemvalue = $2;
183*cdf0e10cSrcweir
184*cdf0e10cSrcweir						if ( $oneitem eq "Directory" ) { if ( $itemkey =~ "DosName" ) { $itemkey =~ s/DosName/HostName/; } }
185*cdf0e10cSrcweir						if (( $oneitem eq "Directory" ) || ( $oneitem eq "File" ) || ( $oneitem eq "Unixlink" )) { if ( $itemvalue eq "PD_PROGDIR" ) { $itemvalue = "PREDEFINED_PROGDIR"; }}
186*cdf0e10cSrcweir						if (( $itemkey eq "Styles" ) && ( $itemvalue =~ /^\s*(\w+)(\s*\;\s*)$/ )) { $itemvalue = "($1)$2"; }
187*cdf0e10cSrcweir
188*cdf0e10cSrcweir						$oneitemhash{$itemkey} = $itemvalue;
189*cdf0e10cSrcweir					}
190*cdf0e10cSrcweir
191*cdf0e10cSrcweir					$currentline++;
192*cdf0e10cSrcweir				}
193*cdf0e10cSrcweir
194*cdf0e10cSrcweir				# no hyphen allowed in gids -> cannot happen here because (\w+) is required for gids
195*cdf0e10cSrcweir				if ( $gid =~ /-/ ) { par2script::exiter::exit_program("ERROR: No hyphen allowed in global id: $gid", "test_of_hyphen"); }
196*cdf0e10cSrcweir
197*cdf0e10cSrcweir				# test of uniqueness
198*cdf0e10cSrcweir				if ( exists($allitemhash{$gid}) )
199*cdf0e10cSrcweir				{
200*cdf0e10cSrcweir					$multidefinitionerror = 1;
201*cdf0e10cSrcweir					push(@multidefinitiongids, $gid);
202*cdf0e10cSrcweir				}
203*cdf0e10cSrcweir
204*cdf0e10cSrcweir				$allitemhash{$gid} = \%oneitemhash;
205*cdf0e10cSrcweir			}
206*cdf0e10cSrcweir		}
207*cdf0e10cSrcweir
208*cdf0e10cSrcweir		$par2script::globals::definitions{$oneitem} = \%allitemhash;
209*cdf0e10cSrcweir	}
210*cdf0e10cSrcweir
211*cdf0e10cSrcweir	if ( $multidefinitionerror ) {	par2script::exiter::multidefinitionerror(\@multidefinitiongids); }
212*cdf0e10cSrcweir
213*cdf0e10cSrcweir	# foreach $key (keys %par2script::globals::definitions)
214*cdf0e10cSrcweir	# {
215*cdf0e10cSrcweir	#	print "Key: $key \n";
216*cdf0e10cSrcweir	#
217*cdf0e10cSrcweir	#	foreach $key (keys %{$par2script::globals::definitions{$key}})
218*cdf0e10cSrcweir	#	{
219*cdf0e10cSrcweir	#		print "\t$key \n";
220*cdf0e10cSrcweir	#	}
221*cdf0e10cSrcweir	# }
222*cdf0e10cSrcweir}
223*cdf0e10cSrcweir
224*cdf0e10cSrcweir######################################################
225*cdf0e10cSrcweir# Filling content into the script
226*cdf0e10cSrcweir######################################################
227*cdf0e10cSrcweir
228*cdf0e10cSrcweirsub put_oneitem_into_script
229*cdf0e10cSrcweir{
230*cdf0e10cSrcweir	my ( $script, $item, $itemhash, $itemkey ) = @_;
231*cdf0e10cSrcweir
232*cdf0e10cSrcweir	push(@{$script}, "$item $itemkey\n" );
233*cdf0e10cSrcweir	my $content = "";
234*cdf0e10cSrcweir	foreach $content (sort keys %{$itemhash->{$itemkey}}) { push(@{$script}, "\t$content = $itemhash->{$itemkey}->{$content};\n" ); }
235*cdf0e10cSrcweir	push(@{$script}, "End\n" );
236*cdf0e10cSrcweir	push(@{$script}, "\n" );
237*cdf0e10cSrcweir}
238*cdf0e10cSrcweir
239*cdf0e10cSrcweir######################################################
240*cdf0e10cSrcweir# Creating the script
241*cdf0e10cSrcweir######################################################
242*cdf0e10cSrcweir
243*cdf0e10cSrcweirsub create_script
244*cdf0e10cSrcweir{
245*cdf0e10cSrcweir	my @script = ();
246*cdf0e10cSrcweir	my $oneitem;
247*cdf0e10cSrcweir
248*cdf0e10cSrcweir	foreach $oneitem ( @par2script::globals::allitems )
249*cdf0e10cSrcweir	{
250*cdf0e10cSrcweir		if ( exists($par2script::globals::definitions{$oneitem}) )
251*cdf0e10cSrcweir		{
252*cdf0e10cSrcweir			if ( $oneitem eq "Shortcut" ) { next; } # "Shortcuts" after "Files"
253*cdf0e10cSrcweir
254*cdf0e10cSrcweir			if (( $oneitem eq "Module" ) || ( $oneitem eq "Directory" )) { write_sorted_items(\@script, $oneitem); }
255*cdf0e10cSrcweir			else { write_unsorted_items(\@script, $oneitem); }
256*cdf0e10cSrcweir		}
257*cdf0e10cSrcweir	}
258*cdf0e10cSrcweir
259*cdf0e10cSrcweir	return \@script;
260*cdf0e10cSrcweir}
261*cdf0e10cSrcweir
262*cdf0e10cSrcweir######################################################
263*cdf0e10cSrcweir# Adding script content for the unsorted items
264*cdf0e10cSrcweir######################################################
265*cdf0e10cSrcweir
266*cdf0e10cSrcweirsub write_unsorted_items
267*cdf0e10cSrcweir{
268*cdf0e10cSrcweir	my ( $script, $oneitem ) = @_;
269*cdf0e10cSrcweir
270*cdf0e10cSrcweir	my $itemhash = $par2script::globals::definitions{$oneitem};
271*cdf0e10cSrcweir
272*cdf0e10cSrcweir	my $itemkey = "";
273*cdf0e10cSrcweir	foreach $itemkey (sort keys %{$itemhash})
274*cdf0e10cSrcweir	{
275*cdf0e10cSrcweir		put_oneitem_into_script($script, $oneitem, $itemhash, $itemkey);
276*cdf0e10cSrcweir
277*cdf0e10cSrcweir		# special handling for Shortcuts after Files
278*cdf0e10cSrcweir		if (( $oneitem eq "File" ) && ( exists($par2script::globals::definitions{"Shortcut"}) ))
279*cdf0e10cSrcweir		{
280*cdf0e10cSrcweir			my $shortcutkey;
281*cdf0e10cSrcweir			foreach $shortcutkey ( keys %{$par2script::globals::definitions{"Shortcut"}} )
282*cdf0e10cSrcweir			{
283*cdf0e10cSrcweir				if ( $par2script::globals::definitions{"Shortcut"}->{$shortcutkey}->{'FileID'} eq $itemkey )
284*cdf0e10cSrcweir				{
285*cdf0e10cSrcweir					put_oneitem_into_script($script, "Shortcut", $par2script::globals::definitions{"Shortcut"}, $shortcutkey);
286*cdf0e10cSrcweir
287*cdf0e10cSrcweir					# and Shortcut to Shortcut also
288*cdf0e10cSrcweir					my $internshortcutkey;
289*cdf0e10cSrcweir					foreach $internshortcutkey ( keys %{$par2script::globals::definitions{"Shortcut"}} )
290*cdf0e10cSrcweir					{
291*cdf0e10cSrcweir						if ( $par2script::globals::definitions{"Shortcut"}->{$internshortcutkey}->{'ShortcutID'} eq $shortcutkey )
292*cdf0e10cSrcweir						{
293*cdf0e10cSrcweir							put_oneitem_into_script($script, "Shortcut", $par2script::globals::definitions{"Shortcut"}, $internshortcutkey);
294*cdf0e10cSrcweir						}
295*cdf0e10cSrcweir					}
296*cdf0e10cSrcweir				}
297*cdf0e10cSrcweir			}
298*cdf0e10cSrcweir		}
299*cdf0e10cSrcweir	}
300*cdf0e10cSrcweir}
301*cdf0e10cSrcweir
302*cdf0e10cSrcweir######################################################
303*cdf0e10cSrcweir# Collecting all children of a specified parent
304*cdf0e10cSrcweir######################################################
305*cdf0e10cSrcweir
306*cdf0e10cSrcweirsub collect_children
307*cdf0e10cSrcweir{
308*cdf0e10cSrcweir	my ( $itemhash, $parent, $order ) = @_;
309*cdf0e10cSrcweir
310*cdf0e10cSrcweir	my $item;
311*cdf0e10cSrcweir	foreach $item ( keys %{$itemhash} )
312*cdf0e10cSrcweir	{
313*cdf0e10cSrcweir		if ( $itemhash->{$item}->{'ParentID'} eq $parent )
314*cdf0e10cSrcweir		{
315*cdf0e10cSrcweir			push(@{$order}, $item);
316*cdf0e10cSrcweir			my $newparent = $item;
317*cdf0e10cSrcweir			collect_children($itemhash, $newparent, $order);
318*cdf0e10cSrcweir		}
319*cdf0e10cSrcweir	}
320*cdf0e10cSrcweir}
321*cdf0e10cSrcweir
322*cdf0e10cSrcweir######################################################
323*cdf0e10cSrcweir# Adding script content for the sorted items
324*cdf0e10cSrcweir######################################################
325*cdf0e10cSrcweir
326*cdf0e10cSrcweirsub write_sorted_items
327*cdf0e10cSrcweir{
328*cdf0e10cSrcweir	my ( $script, $oneitem ) = @_;
329*cdf0e10cSrcweir
330*cdf0e10cSrcweir	my $itemhash = $par2script::globals::definitions{$oneitem};
331*cdf0e10cSrcweir
332*cdf0e10cSrcweir	my @itemorder = ();
333*cdf0e10cSrcweir	my @startparents = ();
334*cdf0e10cSrcweir
335*cdf0e10cSrcweir	if ( $oneitem eq "Module" ) { push(@startparents, ""); }
336*cdf0e10cSrcweir	elsif ( $oneitem eq "Directory" ) { push(@startparents, "PREDEFINED_PROGDIR"); }
337*cdf0e10cSrcweir	else { die "ERROR: No root parent defined for item type $oneitem !\n"; }
338*cdf0e10cSrcweir
339*cdf0e10cSrcweir	# supporting more than one toplevel item
340*cdf0e10cSrcweir	my $parent;
341*cdf0e10cSrcweir	foreach $parent ( @startparents ) { collect_children($itemhash, $parent, \@itemorder); }
342*cdf0e10cSrcweir
343*cdf0e10cSrcweir	my $itemkey;
344*cdf0e10cSrcweir	foreach $itemkey ( @itemorder ) { put_oneitem_into_script($script, $oneitem, $itemhash, $itemkey); }
345*cdf0e10cSrcweir}
346*cdf0e10cSrcweir
347*cdf0e10cSrcweir#######################################################################
348*cdf0e10cSrcweir# Collecting all assigned gids of the type "item" from the modules
349*cdf0e10cSrcweir# in the par files. Using a hash!
350*cdf0e10cSrcweir#######################################################################
351*cdf0e10cSrcweir
352*cdf0e10cSrcweirsub collect_assigned_gids
353*cdf0e10cSrcweir{
354*cdf0e10cSrcweir	my $allmodules = $par2script::globals::definitions{'Module'};
355*cdf0e10cSrcweir
356*cdf0e10cSrcweir	my $item;
357*cdf0e10cSrcweir	foreach $item ( @par2script::globals::items_assigned_at_modules )
358*cdf0e10cSrcweir	{
359*cdf0e10cSrcweir		if ( ! exists($par2script::globals::searchkeys{$item}) ) { par2script::exiter::exit_program("ERROR: Unknown type \"$item\" at modules.", "collect_assigned_gids"); }
360*cdf0e10cSrcweir
361*cdf0e10cSrcweir		my $searchkey = $par2script::globals::searchkeys{$item};
362*cdf0e10cSrcweir
363*cdf0e10cSrcweir		my %assignitems = ();
364*cdf0e10cSrcweir		my $modulegid = "";
365*cdf0e10cSrcweir
366*cdf0e10cSrcweir		foreach $modulegid (keys %{$allmodules} )
367*cdf0e10cSrcweir		{
368*cdf0e10cSrcweir			# print "Module $modulegid\n";
369*cdf0e10cSrcweir			# my $content = "";
370*cdf0e10cSrcweir			# foreach $content (sort keys %{$allmodules->{$modulegid}}) { print "\t$content = $allmodules->{$modulegid}->{$content};\n"; }
371*cdf0e10cSrcweir			# print "End\n";
372*cdf0e10cSrcweir			# print "\n";
373*cdf0e10cSrcweir
374*cdf0e10cSrcweir			if ( exists($allmodules->{$modulegid}->{$searchkey}) )
375*cdf0e10cSrcweir			{
376*cdf0e10cSrcweir				my $list = $allmodules->{$modulegid}->{$searchkey};
377*cdf0e10cSrcweir				if ( $list =~ /^\s*\((.*?)\)\s*(.*?)\s*$/ ) { $list = $1; }
378*cdf0e10cSrcweir				else { par2script::exiter::exit_program("ERROR: Invalid module list: $list", "collect_assigned_gids"); }
379*cdf0e10cSrcweir				my $allassigneditems = par2script::converter::convert_stringlist_into_array_2($list, ",");
380*cdf0e10cSrcweir
381*cdf0e10cSrcweir				my $gid;
382*cdf0e10cSrcweir				foreach $gid ( @{$allassigneditems} )
383*cdf0e10cSrcweir				{
384*cdf0e10cSrcweir					if ( exists($assignitems{$gid}) ) { $assignitems{$gid} = $assignitems{$gid} + 1; }
385*cdf0e10cSrcweir					else { $assignitems{$gid} = 1; }
386*cdf0e10cSrcweir				}
387*cdf0e10cSrcweir			}
388*cdf0e10cSrcweir		}
389*cdf0e10cSrcweir
390*cdf0e10cSrcweir		$par2script::globals::assignedgids{$item} = \%assignitems;
391*cdf0e10cSrcweir	}
392*cdf0e10cSrcweir}
393*cdf0e10cSrcweir
394*cdf0e10cSrcweir##################################################
395*cdf0e10cSrcweir# Collecting the content of all par files.
396*cdf0e10cSrcweir# Then the files do not need to be opened twice.
397*cdf0e10cSrcweir##################################################
398*cdf0e10cSrcweir
399*cdf0e10cSrcweirsub read_all_parfiles
400*cdf0e10cSrcweir{
401*cdf0e10cSrcweir	my ($parfiles) = @_;
402*cdf0e10cSrcweir
403*cdf0e10cSrcweir	my @parfilecontent = ();
404*cdf0e10cSrcweir	my $parfilename;
405*cdf0e10cSrcweir
406*cdf0e10cSrcweir	foreach $parfilename ( @{$parfiles} )
407*cdf0e10cSrcweir	{
408*cdf0e10cSrcweir		my $parfile = par2script::files::read_file($parfilename);
409*cdf0e10cSrcweir		foreach ( @{$parfile} ) { push(@parfilecontent, $_); }
410*cdf0e10cSrcweir		push(@parfilecontent, "\n");
411*cdf0e10cSrcweir	}
412*cdf0e10cSrcweir
413*cdf0e10cSrcweir	return \@parfilecontent;
414*cdf0e10cSrcweir}
415*cdf0e10cSrcweir
416*cdf0e10cSrcweir1;
417