Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 ##########################################################################################
2 #
3 # This Source Code Form is subject to the terms of the Mozilla Public
4 # License, v. 2.0. If a copy of the MPL was not distributed with this
5 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 #------------------------------------------------------------------------------
8 sub debug_print {
9 foreach $str (@_){
10 # print( $str );
11 }
12 }
15 #------------------------------------------------------------------------------
16 # Variables
17 #------------------------------------------------------------------------------
18 $Parse_Time_Max=0;
19 $Content_Time_Max=0;
20 $Frame_Time_Max=0;
21 $Style_Time_Max=0;
22 $Reflow_Time_Max=0;
23 $Layout_Time_Max=0;
24 $Total_Time_Max=0;
26 @RecordList;
27 @LineList;
29 #------------------------------------------------------------------------------
30 # Open the history file and begin by collecting the records into the data-arrays
31 # and set all of the max-values too
32 #------------------------------------------------------------------------------
33 $count=0;
34 open( HISTORY, "History.txt" ) or die "History file could not be opened\n";
35 while(<HISTORY>)
36 {
37 my $PullID;
38 my $BuildID;
39 # - Time variables
40 my $Parse_Time=0;
41 my $Content_Time=0;
42 my $Frame_Time=0;
43 my $Style_Time=0;
44 my $Reflow_Time=0;
45 my $Layout_Time=0;
46 my $Total_Time=0;
47 # - percentage variables
48 my $Parse_Per=0;
49 my $Content_Per=0;
50 my $Frame_Per=0;
51 my $Style_Per=0;
52 my $Reflow_Per=0;
53 my $Layout_Per=0;
55 $i=0;
56 $ThisLine = $_;
57 chop( $Thisline );
58 @LineList = split( /,/, $ThisLine );
60 # get each value into a variable
61 $PullID = $LineList[$i++];
62 $RecordList[$count++] = $PullID;
63 debug_print( "PullID : $PullID \n" );
64 $BuildID = $LineList[$i++];
65 $RecordList[$count++] = $BuildID;
66 debug_print( "BuildID : $BuildID \n" );
68 $Parse_Time = $LineList[$i++];
69 $RecordList[$count++] = $Parse_Time;
70 debug_print( "Parse_Time : $Parse_Time \n" );
71 $Parse_Per = $LineList[$i++];
72 $RecordList[$count++] = $Parse_Per;
73 debug_print( "Parse_Per : $Parse_Per \n" );
74 $Content_Time = $LineList[$i++];
75 $RecordList[$count++] = $Content_Time;
76 debug_print( "Content_Time : $Content_Time \n" );
77 $Content_Per = $LineList[$i++];
78 $RecordList[$count++] = $Content_Per;
79 debug_print( "Content_Per : $Content_Per \n" );
80 $Frame_Time = $LineList[$i++];
81 $RecordList[$count++] = $Frame_Time;
82 debug_print( "Frame_Time : $Frame_Time \n" );
83 $Frame_Per = $LineList[$i++];
84 $RecordList[$count++] = $Frame_Per;
85 debug_print( "Frame_Per : $Frame_Per \n" );
86 $Style_Time = $LineList[$i++];
87 $RecordList[$count++] = $Style_Time;
88 debug_print( "Style_Time : $Style_Time \n" );
89 $Style_Per = $LineList[$i++];
90 $RecordList[$count++] = $Style_Per;
91 debug_print( "Style_Per : $Style_Per \n" );
92 $Reflow_Time = $LineList[$i++];
93 $RecordList[$count++] = $Reflow_Time;
94 debug_print( "Reflow_Time : $Reflow_Time \n" );
95 $Reflow_Per = $LineList[$i++];
96 $RecordList[$count++] = $Reflow_Per;
97 debug_print( "Reflow_Per : $Reflow_Per \n" );
98 $Layout_Time = $LineList[$i++];
99 $RecordList[$count++] = $Layout_Time;
100 debug_print( "Layout_Time : $Layout_Time \n" );
101 $Layout_Per = $LineList[$i++];
102 $RecordList[$count++] = $Layout_Per;
103 debug_print( "Layout_Per : $Layout_Per \n" );
104 $Total_Time = $LineList[$i++];
105 $RecordList[$count++] = $Total_Time;
106 debug_print( "Total_Time : $Total_Time \n" );
108 # Now check for max values
109 if( $Parse_Time > $Parse_Time_Max ){
110 $Parse_Time_Max = $Parse_Time;
111 debug_print( "ParseTimeMax: .$Parse_Time_Max\n");
112 }
113 if( $Content_Time > $Content_Time_Max ){
114 $Content_Time_Max = $Content_Time;
115 debug_print( "Content_Time_Max: $Content_Time_Max\n");
116 }
117 if( $Frame_Time > $Frame_Time_Max ){
118 $Frame_Time_Max = $Frame_Time;
119 debug_print( "Frame_Time_Max: $Frame_Time_Max\n");
120 }
121 if( $Style_Time > $Style_Time_Max ){
122 $Style_Time_Max = $Style_Time;
123 debug_print( "Style_Time_Max: $Style_Time_Max\n");
124 }
125 if( $Reflow_Time > $Reflow_Time_Max ){
126 $Reflow_Time_Max = $Reflow_Time;
127 debug_print( "Reflow_Time_Max: $Reflow_Time_Max\n");
128 }
129 if( $Layout_Time > $Layout_Time_Max ){
130 $Layout_Time_Max = $Layout_Time;
131 debug_print( "Layout_Time_Max: $Layout_Time_Max\n");
132 }
134 if( $Total_Time > $Total_Time_Max ){
135 $Total_Time_Max = $Total_Time;
136 debug_print( "Total_Time_Max: $Total_Time_Max\n");
137 }
138 }
139 close(HISTORY);
141 for $foo (@RecordList){
142 # print( "FOO: $foo \n" );
143 }
144 ProcessHeader();
145 for($index=0; $index<($count/15); $index++)
146 {
147 my $start = 15*$index;
148 my $end = $start+15;
149 print( "Start: $start -> End: $end\n");
150 my @entry = @RecordList[$start..$end];
151 print( "Processing entry $index\n");
152 ProcessEntry( @entry );
153 }
154 ProcessFooter();
156 #------------------------------------------------------------------------------
157 #
158 sub ProcessHeader {
159 debug_print("ProcessHeader\n");
161 ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst)=localtime;
162 %weekday= (
163 "1", "$day",
164 '2', 'Tuesday',
165 '3', 'Wednesday',
166 '4', 'Thursday',
167 '5', 'Friday',
168 '6', 'Saturday',
169 '7', 'Sunday',
170 );
171 $mon += 1;
172 $year += 1900;
174 open(TRENDTABLE, "> TrendTable.html") or die "Cannot open trend-table file (TrendTable.html) in ProcessHeader\n";
175 print(TRENDTABLE "<!-- Generated by history.pl part of the Gecko PerfTools -->\n");
176 print(TRENDTABLE "<BODY>\n" );
177 print(TRENDTABLE "<H2 align=center><font color='maroon'>Performance History and Trending Table</font></H2><BR>\n" );
178 print (TRENDTABLE "<center><font size=-1>");
179 print (TRENDTABLE "$weekday{$wday} ");
180 print (TRENDTABLE "$mon/$mday/$year ");
181 printf (TRENDTABLE "%02d:%02d:%02d", $hour, $min, $sec);
182 print (TRENDTABLE "</font></center>");
183 print (TRENDTABLE "<BR>");
184 print(TRENDTABLE "<!-- First the headings (static) -->\n" );
185 print(TRENDTABLE "<TABLE BORDER=1 width=99% BGCOLOR='white'>\n" );
186 print(TRENDTABLE "<TR >\n" );
187 print(TRENDTABLE "<TD ROWSPAN=2 width=5% align=center valign=top BGCOLOR='#E0E0E0'>\n" );
188 print(TRENDTABLE "<B>Pull-ID</B>\n" );
189 print(TRENDTABLE "</TD>\n" );
190 print(TRENDTABLE "<TD ROWSPAN=2 align=center width=5% valign=top BGCOLOR='#E0E0E0'>\n" );
191 print(TRENDTABLE "<B>Build-ID</B>\n" );
192 print(TRENDTABLE "</TD>\n" );
193 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
194 print(TRENDTABLE "<B>Parsing</B>\n" );
195 print(TRENDTABLE "</TD>\n" );
196 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
197 print(TRENDTABLE "<B>Content Creation</B>\n" );
198 print(TRENDTABLE "</TD>\n" );
199 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
200 print(TRENDTABLE "<B>Frame Creation</B>\n" );
201 print(TRENDTABLE "</TD>\n" );
202 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
203 print(TRENDTABLE "<B>Style Resolution</B>\n" );
204 print(TRENDTABLE "</TD>\n" );
205 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
206 print(TRENDTABLE "<B>Reflow</B>\n" );
207 print(TRENDTABLE "</TD>\n" );
208 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
209 print(TRENDTABLE "<B>Total Layout</B>\n" );
210 print(TRENDTABLE "<TD ROWSPAN=1 align=center width=10% valign=top BGCOLOR='#E0E0E0'>\n" );
211 print(TRENDTABLE "<B>Total Time</B>\n" );
212 print(TRENDTABLE "</TD>\n" );
213 print(TRENDTABLE "</TR>\n" );
214 print(TRENDTABLE "<TD>\n" );
215 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
216 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
217 print(TRENDTABLE "</TD>\n" );
218 print(TRENDTABLE "<TD>\n" );
219 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
220 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
221 print(TRENDTABLE "</TD>\n" );
222 print(TRENDTABLE "<TD>\n" );
223 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
224 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
225 print(TRENDTABLE "</TD>\n" );
226 print(TRENDTABLE "<TD>\n" );
227 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
228 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
229 print(TRENDTABLE "</TD>\n" );
230 print(TRENDTABLE "<TD>\n" );
231 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
232 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
233 print(TRENDTABLE "</TD>\n" );
234 print(TRENDTABLE "<TD>\n" );
235 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
236 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=50%>Sec</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>%</TD></TR></TABLE>\n" );
237 print(TRENDTABLE "</TD>\n" );
238 print(TRENDTABLE "<TD>\n" );
239 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center BGCOLOR='#E0E0E0'>\n" );
240 print(TRENDTABLE "<TR><TD BGCOLOR='#FFFFC6' align=left width=100%>Sec</TD></TR></TABLE>\n" );
241 print(TRENDTABLE "</TD>\n" );
242 close(TRENDTABLE);
243 }
245 #------------------------------------------------------------------------------
246 #
247 sub ProcessEntry {
249 my $PullID;
250 my $BuildID;
251 # - Time variables
252 my $Parse_Time=0;
253 my $Content_Time=0;
254 my $Frame_Time=0;
255 my $Style_Time=0;
256 my $Reflow_Time=0;
257 my $Layout_Time=0;
258 my $Total_Time=0;
259 # - percentage variables
260 my $Parse_Per=0;
261 my $Content_Per=0;
262 my $Frame_Per=0;
263 my $Style_Per=0;
264 my $Reflow_Per=0;
265 my $Layout_Per=0;
266 # - weight variables
267 my $Parse_Weight=0;
268 my $Content_Weight=0;
269 my $Frame_Weight=0;
270 my $Style_Weight=0;
271 my $Reflow_Weight=0;
272 my $Layout_Weight=0;
273 my $Total_Weight=0;
275 debug_print( "Process Entry\n" );
276 my @EntryLine =@_;
278 open(TRENDTABLE, ">> TrendTable.html") or die "Cannot open trend-table file (TrendTable.html) in ProcessHeader\n";
279 $i=0;
280 $PullID = $EntryLine[$i++];
281 debug_print( "PullID: $PullID \n" );
282 $BuildID = $EntryLine[$i++];
283 debug_print( "BuildID: $BuildID \n" );
284 $Parse_Time = $EntryLine[$i++];
285 debug_print( "Parse_Time : $Parse_Time \n" );
286 $Parse_Per = $EntryLine[$i++];
287 debug_print( "Parse_Per : $Parse_Per \n" );
288 $Content_Time = $EntryLine[$i++];
289 debug_print( "Content_Time : $Content_Time \n" );
290 $Content_Per = $EntryLine[$i++];
291 debug_print( "Content_Per : $Content_Per \n" );
292 $Frame_Time = $EntryLine[$i++];
293 debug_print( "Frame_Time : $Frame_Time \n" );
294 $Frame_Per = $EntryLine[$i++];
295 debug_print( "Frame_Per : $Frame_Per \n" );
296 $Style_Time = $EntryLine[$i++];
297 debug_print( "Style_Time : $Style_Time \n" );
298 $Style_Per = $EntryLine[$i++];
299 debug_print( "Style_Per : $Style_Per \n" );
300 $Reflow_Time = $EntryLine[$i++];
301 debug_print( "Reflow_Time : $Reflow_Time \n" );
302 $Reflow_Per = $EntryLine[$i++];
303 debug_print( "Reflow_Per : $Reflow_Per \n" );
304 $Layout_Time = $EntryLine[$i++];
305 debug_print( "Layout_Time : $Layout_Time \n" );
306 $Layout_Per = $EntryLine[$i++];
307 debug_print( "Layout_Per : $Layout_Per \n" );
308 $Total_Time = $EntryLine[$i++];
309 debug_print( "Total_Time : $Total_Time \n" );
311 if( $Parse_Time_Max > 0 ){
312 $ParseWeight = $Parse_Time / $Parse_Time_Max * 100;
313 debug_print( "ParseWeight = $ParseWeight \n" );
314 }
315 if( $Content_Time_Max > 0 ){
316 $ContentWeight = $Content_Time / $Content_Time_Max * 100;
317 debug_print( "ContentWeight = $ContentWeight \n" );
318 }
319 if( $Frame_Time_Max > 0 ){
320 $FrameWeight = $Frame_Time / $Frame_Time_Max * 100;
321 debug_print( "FrameWeight = $FrameWeight \n" );
322 }
323 if( $Style_Time_Max > 0 ){
324 $StyleWeight = $Style_Time / $Style_Time_Max * 100;
325 debug_print( "StyleWeight = $StyleWeight \n" );
326 }
327 if( $Reflow_Time_Max > 0 ){
328 $ReflowWeight = $Reflow_Time / $Reflow_Time_Max * 100;
329 debug_print( "ReflowWeight = $ReflowWeight \n" );
330 }
331 if( $Layout_Time_Max > 0 ){
332 $LayoutWeight = $Layout_Time / $Layout_Time_Max * 100;
333 debug_print( "LayoutWeight = $LayoutWeight \n" );
334 }
335 if( $Total_Time_Max > 0 ){
336 $TotalWeight = $Total_Time / $Total_Time_Max * 100;
337 debug_print( "TotalWeight = $TotalWeight \n" );
338 }
340 $bldID;
341 @bldIDParts = split( /:/, $BuildID );
342 $bldID = $bldIDParts[1];
343 print(TRENDTABLE "<!-- Next entry... -->\n");
344 print(TRENDTABLE "<TR> \n");
345 print(TRENDTABLE "<TD ROWSPAN=1>$PullID</TD>\n");
346 print(TRENDTABLE "<TD ROWSPAN=1>$bldID</TD>\n");
347 print(TRENDTABLE "<!-- Parse Time -->\n");
348 print(TRENDTABLE "<TD>\n");
349 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
350 printf(TRENDTABLE "%4.3f", $Parse_Time);
351 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>");
352 printf(TRENDTABLE "%4.3f",$Parse_Per);
353 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$ParseWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
354 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
355 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $ParseWeight);
356 print(TRENDTABLE "</TD>\n");
357 print(TRENDTABLE "<!-- Content Time -->\n");
358 print(TRENDTABLE "<TD>\n");
359 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
360 printf(TRENDTABLE "%4.3f",$Content_Time);
361 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>");
362 printf(TRENDTABLE "%4.3f",$Content_Per);
363 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$ContentWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
364 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
365 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $ContentWeight);
366 print(TRENDTABLE "</TD>\n");
367 print(TRENDTABLE "<!-- Frames Time -->\n");
368 print(TRENDTABLE "<TD>\n");
369 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
370 printf(TRENDTABLE "%4.3f",$Frame_Time);
371 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%> ");
372 printf(TRENDTABLE "%4.3f",$Frame_Per);
373 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$FrameWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
374 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
375 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $FrameWeight);
376 print(TRENDTABLE "</TD>\n");
377 print(TRENDTABLE "<!-- Style Time -->\n");
378 print(TRENDTABLE "<TD>\n");
379 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
380 printf(TRENDTABLE "%4.3f",$Style_Time);
381 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>");
382 printf(TRENDTABLE "%4.3f",$Style_Per);
383 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$StyleWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
384 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
385 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $StyleWeight);
386 print(TRENDTABLE "</TD>\n");
387 print(TRENDTABLE "<!-- Reflow Time -->\n");
388 print(TRENDTABLE "<TD>\n");
389 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
390 printf(TRENDTABLE "%4.3f",$Reflow_Time);
391 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>");
392 printf(TRENDTABLE "%4.3f",$Reflow_Per);
393 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$ReflowWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
394 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
395 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $ReflowWeight);
396 print(TRENDTABLE "</TD>\n");
397 print(TRENDTABLE "<!-- Layout Time -->\n");
398 print(TRENDTABLE "<TD>\n");
399 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=50%>");
400 printf(TRENDTABLE "%4.3f",$Layout_Time);
401 print(TRENDTABLE "</TD><TD BGCOLOR='#CFEEF7' align=right width=50%>");
402 printf(TRENDTABLE "%4.3f",$Layout_Per);
403 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$LayoutWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
404 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
405 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $LayoutWeight);
406 print(TRENDTABLE "</TD>\n");
407 print(TRENDTABLE "<!-- Parse Time -->\n");
408 print(TRENDTABLE "<TD>\n");
409 print(TRENDTABLE "<TABLE BORDER=0 width=100% align=center COLS=2><TR><TD BGCOLOR='#FFFFC6' align=left width=100%>");
410 printf(TRENDTABLE "%4.3f",$Total_Time);
411 print(TRENDTABLE "</TD></TR><TR><TD colspan=2><table WIDTH=$TotalWeight% bgcolor=blue><tr><td><font align=center size=-2> ");
412 print(TRENDTABLE "</td></font></tr></table></TD></TR></TABLE>");
413 printf(TRENDTABLE "<font size=-1>%4.2f % </font>", $TotalWeight);
414 print(TRENDTABLE "</TD>\n");
415 print(TRENDTABLE "</TR>\n");
417 close(TRENDTABLE);
418 }
420 #------------------------------------------------------------------------------
421 #
422 sub ProcessFooter {
423 debug_print("ProcessHeader\n");
424 open(TRENDTABLE, ">> TrendTable.html") or die "Cannot open trend-table file (TrendTable.html) in ProcessFooter\n";
426 print(TRENDTABLE "</TABLE>\n");
427 print(TRENDTABLE "</BODY>\n");
429 close(TRENDTABLE);
430 }