Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / mhrcfile.pl
CommitLineData
86530b38
AT
1##---------------------------------------------------------------------------##
2## File:
3## $Id: mhrcfile.pl,v 2.25 2002/07/27 05:13:13 ehood Exp $
4## Author:
5## Earl Hood mhonarc@mhonarc.org
6## Description:
7## Routines for parsing resource files
8##---------------------------------------------------------------------------##
9## MHonArc -- Internet mail-to-HTML converter
10## Copyright (C) 1996-2001 Earl Hood, mhonarc@mhonarc.org
11##
12## This program is free software; you can redistribute it and/or modify
13## it under the terms of the GNU General Public License as published by
14## the Free Software Foundation; either version 2 of the License, or
15## (at your option) any later version.
16##
17## This program is distributed in the hope that it will be useful,
18## but WITHOUT ANY WARRANTY; without even the implied warranty of
19## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20## GNU General Public License for more details.
21##
22## You should have received a copy of the GNU General Public License
23## along with this program; if not, write to the Free Software
24## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
25## 02111-1307, USA
26##---------------------------------------------------------------------------##
27
28package mhonarc;
29
30##---------------------------------------------------------------------------
31## read_resource_file() parses the resource file.
32## (The code for this routine could probably be simplified).
33##
34sub read_resource_file {
35 my($file) = shift;
36 my($line, $tag, $label, $acro, $hr, $type, $routine, $plfile,
37 $url, $arg, $tmp, @a);
38 my($elem, $attr, $override, $handle, $pathhead, $chop);
39 local($_);
40 $override = 0;
41
42 $handle = &file_open($file);
43
44 if ($file =~ m%(.*[$DIRSEPREX])%o) {
45 $pathhead = $1;
46 $MainRcDir = $pathhead unless defined $MainRcDir;
47 } else {
48 $pathhead = '';
49 }
50
51 print STDOUT "Reading resource file: $file ...\n" unless $QUIET;
52 while (defined($line = <$handle>)) {
53 next unless $line =~ /^\s*<([^>]+)>/;
54 $attr = '';
55 ($elem, $attr) = split(' ', $1, 2);
56 $attr = '' unless defined($attr);
57 $elem =~ tr/A-Z/a-z/;
58 $override = ($attr =~ /override/i);
59 $chop = ($attr =~ /chop/i);
60
61 FMTSW: {
62 if ($elem eq 'addressmodifycode') { # Code to strip subjects
63 $AddressModify = &get_elem_content($handle, $elem, $chop);
64 last FMTSW;
65 }
66 if ($elem eq 'authorbegin') { # Begin for author group
67 $AUTHBEG = &get_elem_content($handle, $elem, $chop);
68 last FMTSW;
69 }
70 if ($elem eq 'authorend') { # End for author group
71 $AUTHEND = &get_elem_content($handle, $elem, $chop);
72 last FMTSW;
73 }
74 if ($elem eq 'authsort') { # Sort msgs by author
75 $AUTHSORT = 1;
76 $NOSORT = 0; $SUBSORT = 0;
77 last FMTSW;
78 }
79 if ($elem eq 'botlinks') { # Bottom links in message
80 $BOTLINKS = &get_elem_content($handle, $elem, $chop);
81 last FMTSW;
82 }
83 if ($elem eq 'charsetconverters') { # Charset filters
84 $IsDefault{'CHARSETCONVERTERS'} = 0;
85 if ($override) {
86 %readmail::MIMECharSetConverters = ();
87 %readmail::MIMECharSetConvertersSrc = ();
88 }
89 while (defined($line = <$handle>)) {
90 last if $line =~ /^\s*<\/charsetconverters\s*>/i;
91 next if $line =~ /^\s*$/;
92 $line =~ s/\s//g;
93 if ($line =~ /;/) { # using Perl 5 qualification
94 ($type,$routine,$plfile) = split(/;/,$line,3);
95 } else {
96 ($type,$routine,$plfile) = split(/:/,$line,3);
97 }
98 $type =~ tr/A-Z/a-z/;
99 $readmail::MIMECharSetConverters{$type} = $routine;
100 $readmail::MIMECharSetConvertersSrc{$type} = $plfile
101 if defined($plfile) and $plfile =~ /\S/;
102 }
103 last FMTSW;
104 }
105 if ($elem eq 'checknoarchive') {
106 $CheckNoArchive = 1; last FMTSW;
107 }
108 if ($elem eq 'conlen') {
109 $CONLEN = 1; last FMTSW;
110 }
111 if ($elem eq 'datefields') {
112 @a = &get_list_content($handle, $elem);
113 if (@a) { @DateFields = @a; }
114 last FMTSW;
115 }
116 if ($elem eq 'daybegin') { # Begin for day group
117 $DAYBEG = &get_elem_content($handle, $elem, $chop);
118 last FMTSW;
119 }
120 if ($elem eq 'dayend') { # End for day group
121 $DAYEND = &get_elem_content($handle, $elem, $chop);
122 last FMTSW;
123 }
124 if ($elem eq 'decodeheads') {
125 $DecodeHeads = 1; last FMTSW;
126 }
127 if ($elem eq 'definederived') { # Custom derived file
128 %UDerivedFile = () if $override;
129 $line = <$handle>;
130 last FMTSW if $line =~ /^\s*<\/definederived\s*>/i;
131 $line =~ s/\s//g;
132 $UDerivedFile{$line} = &get_elem_content($handle, $elem, $chop);
133 last FMTSW;
134 }
135 if ($elem eq 'definevar') { # Custom resource variable
136 @CustomRcVars = () if $override;
137 $line = <$handle>;
138 last FMTSW if $line =~ /^\s*<\/definevar\s*>/i;
139 $line =~ s/\s//g;
140 $CustomRcVars{$line} = &get_elem_content($handle, $elem, $chop);
141 last FMTSW;
142 }
143 if ($elem eq 'doc') { # Link to documentation
144 $NODOC = 0; last FMTSW;
145 }
146 if ($elem eq 'docurl') { # Doc URL
147 if ($line = &get_elem_last_line($handle, $elem)) {
148 $DOCURL = $line;
149 }
150 last FMTSW;
151 }
152 if ($elem eq 'excs') { # Exclude header fields
153 %HFieldsExc = () if $override;
154 while (defined($line = <$handle>)) {
155 last if $line =~ /^\s*<\/excs\s*>/i;
156 $line =~ s/\s//g; $line =~ tr/A-Z/a-z/;
157 $HFieldsExc{$line} = 1 if $line;
158 }
159 last FMTSW;
160 }
161 if ($elem eq 'expireage') { # Time in seconds until expire
162 if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') {
163 $ExpireTime = $tmp;
164 }
165 last FMTSW;
166 }
167 if ($elem eq 'expiredate') { # Expiration date
168 if ($line = &get_elem_last_line($handle, $elem)) {
169 $ExpireDate = $line;
170 }
171 last FMTSW;
172 }
173 if ($elem eq 'fieldstyles') { # Field text style
174 while (defined($line = <$handle>)) {
175 last if $line =~ /^\s*<\/fieldstyles\s*>/i;
176 next if $line =~ /^\s*$/;
177 $line =~ s/\s//g; $line =~ tr/A-Z/a-z/;
178 ($label, $tag) = split(/:/,$line);
179 $HeadFields{$label} = $tag;
180 }
181 last FMTSW;
182 }
183 if ($elem eq 'fieldorder') { # Field order
184 @FieldOrder = (); %FieldODefs = ();
185 while (defined($line = <$handle>)) {
186 last if $line =~ /^\s*<\/fieldorder\s*>/i;
187 next if $line =~ /^\s*$/;
188 $line =~ s/\s//g; $line =~ tr/A-Z/a-z/;
189 push(@FieldOrder, $line);
190 $FieldODefs{$line} = 1;
191 }
192 # push(@FieldOrder,'-extra-') if (!$FieldODefs{'-extra-'});
193 last FMTSW;
194 }
195 if ($elem eq 'fieldsbeg') { # Begin markup of mail head
196 $FIELDSBEG = &get_elem_content($handle, $elem, $chop);
197 last FMTSW;
198 }
199 if ($elem eq 'fieldsend') { # End markup of mail head
200 $FIELDSEND = &get_elem_content($handle, $elem, $chop);
201 last FMTSW;
202 }
203 if ($elem eq 'firstpglink') { # First page link in index
204 $FIRSTPGLINK = &get_elem_content($handle, $elem, $chop);
205 last FMTSW;
206 }
207 if ($elem eq 'fldbeg') { # Begin markup of field text
208 $FLDBEG = &get_elem_content($handle, $elem, $chop);
209 last FMTSW;
210 }
211 if ($elem eq 'fldend') { # End markup of field text
212 $FLDEND = &get_elem_content($handle, $elem, $chop);
213 last FMTSW;
214 }
215 if ($elem eq 'folrefs') { # Print explicit fol/refs
216 $DoFolRefs = 1; last FMTSW;
217 }
218 if ($elem eq 'folupbegin') { # Begin markup for follow-ups
219 $FOLUPBEGIN = &get_elem_content($handle, $elem, $chop);
220 last FMTSW;
221 }
222 if ($elem eq 'folupend') { # End markup for follow-ups
223 $FOLUPEND = &get_elem_content($handle, $elem, $chop);
224 last FMTSW;
225 }
226 if ($elem eq 'foluplitxt') { # Follow-up link markup
227 $FOLUPLITXT = &get_elem_content($handle, $elem, $chop);
228 last FMTSW;
229 }
230 if ($elem eq 'fromfields') { # Fields to get author
231 @a = &get_list_content($handle, $elem);
232 if (@a) { @FromFields = @a; }
233 last FMTSW;
234 }
235 if ($elem eq 'gmtdatefmt') { # GMT date format
236 if ($line = &get_elem_last_line($handle, $elem)) {
237 $GMTDateFmt = $line;
238 }
239 last FMTSW;
240 }
241 if ($elem eq 'gzipexe') { # Gzip executable
242 if ($line = &get_elem_last_line($handle, $elem)) {
243 $line =~ s/\s+$//g;
244 $GzipExe = $line;
245 }
246 last FMTSW;
247 }
248 if ($elem eq 'gzipfiles') {
249 $GzipFiles = 1; last FMTSW;
250 }
251 if ($elem eq 'gziplinks') {
252 $GzipLinks = 1; last FMTSW;
253 }
254 if ($elem eq 'headbodysep') {
255 $HEADBODYSEP = &get_elem_content($handle, $elem, $chop);
256 last FMTSW;
257 }
258 if ($elem eq 'htmlext') { # Extension for HTML files
259 if ($line = &get_elem_last_line($handle, $elem)) {
260 $line =~ s/\s//g;
261 $HtmlExt = $line;
262 }
263 last FMTSW;
264 }
265 if ($elem eq 'icons') { # Icons
266 %Icons = () if $override;
267 while (defined($line = <$handle>)) {
268 last if $line =~ /^\s*<\/icons\s*>/i;
269 next if $line =~ /^\s*$/;
270 $line =~ s/\s//g;
271 ($type, $url) = split(/[;:]/,$line,2);
272 $type =~ tr/A-Z/a-z/;
273 $Icons{$type} = $url;
274 }
275 last FMTSW;
276 }
277 if ($elem eq 'idxfname') { # Index filename
278 if ($line = &get_elem_last_line($handle, $elem)) {
279 $line =~ s/\s//g;
280 $IDXNAME = $line;
281 }
282 last FMTSW;
283 }
284 if ($elem eq 'idxlabel') { # Index label
285 $IDXLABEL = &get_elem_content($handle, $elem, $chop);
286 last FMTSW;
287 }
288 if ($elem eq 'idxpgbegin') { # Opening markup of index
289 $IDXPGBEG = &get_elem_content($handle, $elem, $chop);
290 last FMTSW;
291 }
292 if ($elem eq 'idxpgend') { # Closing markup of index
293 $IDXPGEND = &get_elem_content($handle, $elem, $chop);
294 last FMTSW;
295 }
296 if ($elem eq 'idxprefix') { # Prefix for main idx pages
297 if ($line = &get_elem_last_line($handle, $elem)) {
298 $line =~ s/\s//g;
299 $IDXPREFIX = $line;
300 }
301 last FMTSW;
302 }
303 if ($elem eq 'idxsize') { # Size of index
304 if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') {
305 $IDXSIZE = $tmp;
306 }
307 last FMTSW;
308 }
309 if ($elem eq 'include') { # Include other rc files
310 while (defined($line = <$handle>)) {
311 last if $line =~ /^\s*<\/include\s*>/i;
312 next if $line =~ /^\s*$/;
313 $line =~ s/\s+$//;
314 $line = $pathhead . $line if ($line !~ /$DIRSEPREX/o);
315 &read_resource_file($line);
316 }
317 last FMTSW;
318 }
319 if ($elem eq 'keeponrmm') { # Keep files on rmm
320 $KeepOnRmm = 1;
321 last FMTSW;
322 }
323 if ($elem eq 'labelbeg') { # Begin markup of label
324 $LABELBEG = &get_elem_content($handle, $elem, $chop);
325 last FMTSW;
326 }
327 if ($elem eq 'labelend') { # End markup of label
328 $LABELEND = &get_elem_content($handle, $elem, $chop);
329 last FMTSW;
330 }
331 if ($elem eq 'labelstyles') { # Field label style
332 while (defined($line = <$handle>)) {
333 last if $line =~ /^\s*<\/labelstyles\s*>/i;
334 next if $line =~ /^\s*$/;
335 $line =~ s/\s//g; $line =~ tr/A-Z/a-z/;
336 ($label, $tag) = split(/:/,$line);
337 $HeadHeads{$label} = $tag;
338 }
339 last FMTSW;
340 }
341 if ($elem eq 'lastpglink') { # Last page link in index
342 $LASTPGLINK = &get_elem_content($handle, $elem, $chop);
343 last FMTSW;
344 }
345 if ($elem eq 'listbegin') { # List begin
346 $LIBEG = &get_elem_content($handle, $elem, $chop);
347 last FMTSW;
348 }
349 if ($elem eq 'listend') { # List end
350 $LIEND = &get_elem_content($handle, $elem, $chop);
351 last FMTSW;
352 }
353 if ($elem eq 'litemplate') { # List item template
354 $LITMPL = &get_elem_content($handle, $elem, $chop);
355 last FMTSW;
356 }
357 if ($elem eq 'localdatefmt') { # Local date format
358 if ($line = &get_elem_last_line($handle, $elem)) {
359 $LocalDateFmt = $line;
360 }
361 last FMTSW;
362 }
363 if ($elem eq 'lockmethod') { # Locking method
364 if ($line = &get_elem_last_line($handle, $elem)) {
365 $LockMethod = &set_lock_mode($line);
366 }
367 last FMTSW;
368 }
369 if ($elem eq 'mailto') { # Convert e-mail addrs
370 $NOMAILTO = 0; last FMTSW;
371 }
372 if ($elem eq 'mailtourl') { # mailto URL
373 while (defined($line = <$handle>)) {
374 last if $line =~ /^\s*<\/mailtourl\s*>/i;
375 next if $line =~ /^\s*$/;
376 $line =~ s/\s//g;
377 $MAILTOURL = $line;
378 }
379 last FMTSW;
380 }
381 if ($elem eq 'main') { # Print main index
382 $MAIN = 1; last FMTSW;
383 }
384 if ($elem eq 'maxsize') { # Size of archive
385 if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') {
386 $MAXSIZE = $tmp;
387 }
388 last FMTSW;
389 }
390 if ($elem eq 'msgbodyend') { # Markup after message body
391 $MSGBODYEND = &get_elem_content($handle, $elem, $chop);
392 last FMTSW;
393 }
394 if ($elem eq 'msgexcfilter') { # Code selectively exclude msgs
395 $MsgExcFilter = &get_elem_content($handle, $elem, $chop);
396 last FMTSW;
397 }
398 if ($elem eq 'msgpgs') { # Output message pages
399 $NoMsgPgs = 0; last FMTSW;
400 }
401 if ($elem eq 'msgprefix') { # Prefix for message files
402 if ($line = &get_elem_last_line($handle, $elem)) {
403 $line =~ s/\s//g;
404 $MsgPrefix = $line;
405 }
406 last FMTSW;
407 }
408 if ($elem eq 'mhpattern') { # File pattern MH-like dirs
409 if ($line = &get_elem_last_line($handle, $elem)) {
410 $MHPATTERN = $line;
411 }
412 last FMTSW;
413 }
414 if ($elem eq 'mimealtprefs') { # Mime alternative prefs
415 $IsDefault{'MIMEALTPREFS'} = 0;
416 @MIMEAltPrefs = ();
417 while (defined($line = <$handle>)) {
418 last if $line =~ /^\s*<\/mimealtprefs\s*>/i;
419 $line =~ s/\s//g;
420 push(@MIMEAltPrefs, lc($line)) if $line;
421 }
422 last FMTSW;
423 }
424 if ($elem eq 'mimedecoders') { # Mime decoders
425 $IsDefault{'MIMEDECODERS'} = 0;
426 if ($override) {
427 %readmail::MIMEDecoders = ();
428 %readmail::MIMEDecodersSrc = ();
429 }
430 while (defined($line = <$handle>)) {
431 last if $line =~ /^\s*<\/mimedecoders\s*>/i;
432 next unless $line =~ /\S/;
433 $line =~ s/\s//g;
434 if ($line =~ /;/) { # using Perl 5 qualification
435 ($type,$routine,$plfile) = split(/;/,$line,3);
436 } else {
437 ($type,$routine,$plfile) = split(/:/,$line,3);
438 }
439 $type =~ tr/A-Z/a-z/;
440 $readmail::MIMEDecoders{$type} = $routine;
441 $readmail::MIMEDecodersSrc{$type} = $plfile if $plfile =~ /\S/;
442 }
443 last FMTSW;
444 }
445 if ($elem eq 'mimefilters') { # Mime filters
446 $IsDefault{'MIMEFILTERS'} = 0;
447 if ($override) {
448 %readmail::MIMEFilters = ();
449 %readmail::MIMEFiltersSrc = ();
450 }
451 while (defined($line = <$handle>)) {
452 last if $line =~ /^\s*<\/mimefilters\s*>/i;
453 next if $line =~ /^\s*$/;
454 $line =~ s/\s//g;
455 if ($line =~ /;/) { # using Perl 5 qualification
456 ($type,$routine,$plfile) = split(/;/,$line,3);
457 } else {
458 ($type,$routine,$plfile) = split(/:/,$line,3);
459 }
460 $type =~ tr/A-Z/a-z/;
461 $readmail::MIMEFilters{$type} = $routine;
462 $readmail::MIMEFiltersSrc{$type} = $plfile if $plfile =~ /\S/;
463 }
464 last FMTSW;
465 }
466 if ($elem eq 'mimeargs') { # Mime arguments
467 $IsDefault{'MIMEARGS'} = 0;
468 %readmail::MIMEFiltersArgs = () if $override;
469 while (defined($line = <$handle>)) {
470 last if $line =~ /^\s*<\/mimeargs\s*>/i;
471 next unless $line =~ /\S/;
472 $line =~ s/^\s+//;
473 if ($line =~ /;/) { # using Perl 5 qualification
474 ($type, $arg) = split(/;/,$line,2);
475 } else {
476 ($type, $arg) = split(/:/,$line,2);
477 }
478 $type =~ tr/A-Z/a-z/ if $type =~ m%/%;
479 $readmail::MIMEFiltersArgs{$type} = $arg;
480 }
481 last FMTSW;
482 }
483 if ($elem eq 'mimeexcs') { # Mime exclusions
484 $IsDefault{'MIMEEXCS'} = 0;
485 %readmail::MIMEExcs = () if $override;
486 while (defined($line = <$handle>)) {
487 last if $line =~ /^\s*<\/mimeexcs\s*>/i;
488 $line =~ s/\s//g; $line =~ tr/A-Z/a-z/;
489 $readmail::MIMEExcs{$line} = 1 if $line;
490 }
491 last FMTSW;
492 }
493 if ($elem eq 'months') { # Full month names
494 @a = &get_list_content($handle, $elem);
495 if (scalar(@a)) {
496 @Months = @a;
497 }
498 last FMTSW;
499 }
500 if ($elem eq 'monthsabr') { # Abbreviated month names
501 @a = &get_list_content($handle, $elem);
502 if (scalar(@a)) {
503 @months = @a;
504 }
505 last FMTSW;
506 }
507 if ($elem eq 'modtime') { # Mod time same as msg date
508 $MODTIME = 1; last FMTSW;
509 }
510 if ($elem eq 'msgfoot') { # Message footer text
511 $MSGFOOT = &get_elem_content($handle, $elem, $chop);
512 last FMTSW;
513 }
514 if ($elem eq 'msggmtdatefmt') { # Message GMT date format
515 if ($line = &get_elem_last_line($handle, $elem)) {
516 $MsgGMTDateFmt = $line;
517 }
518 last FMTSW;
519 }
520 if ($elem eq 'msghead') { # Message header text
521 $MSGHEAD = &get_elem_content($handle, $elem, $chop);
522 last FMTSW;
523 }
524 if ($elem eq 'msgidlink') {
525 $MSGIDLINK = &get_elem_content($handle, $elem, $chop);
526 last FMTSW;
527 }
528 if ($elem eq 'msglocaldatefmt') { # Message local date format
529 if ($line = &get_elem_last_line($handle, $elem)) {
530 $MsgLocalDateFmt = $line;
531 }
532 last FMTSW;
533 }
534 if ($elem eq 'msgpgbegin') { # Opening markup of message
535 $MSGPGBEG = &get_elem_content($handle, $elem, $chop);
536 last FMTSW;
537 }
538 if ($elem eq 'msgpgend') { # Closing markup of message
539 $MSGPGEND = &get_elem_content($handle, $elem, $chop);
540 last FMTSW;
541 }
542 if ($elem eq 'msgsep') { # Message separator
543 if ($line = &get_elem_last_line($handle, $elem)) {
544 $FROM = $line;
545 }
546 last FMTSW;
547 }
548 if ($elem eq 'multipg') { # Print multi-page indexes
549 $MULTIIDX = 1; last FMTSW;
550 }
551 if ($elem eq 'nextbutton') { # Next button link in message
552 $NEXTBUTTON = &get_elem_content($handle, $elem, $chop);
553 last FMTSW;
554 }
555 if ($elem eq 'nextbuttonia') {
556 $NEXTBUTTONIA = &get_elem_content($handle, $elem, $chop);
557 last FMTSW;
558 }
559 if ($elem eq 'nextlink') { # Next link in message
560 $NEXTLINK = &get_elem_content($handle, $elem, $chop);
561 last FMTSW;
562 }
563 if ($elem eq 'nextlinkia') {
564 $NEXTLINKIA = &get_elem_content($handle, $elem, $chop);
565 last FMTSW;
566 }
567 if ($elem eq 'nextpglink') { # Next page link in index
568 $NEXTPGLINK = &get_elem_content($handle, $elem, $chop);
569 last FMTSW;
570 }
571 if ($elem eq 'nextpglinkia') {
572 $NEXTPGLINKIA = &get_elem_content($handle, $elem, $chop);
573 last FMTSW;
574 }
575 if ($elem eq 'news') { # News for linking
576 $NONEWS = 0; last FMTSW;
577 }
578 if ($elem eq 'noauthsort') { # Do not sort msgs by author
579 $AUTHSORT = 0;
580 last FMTSW;
581 }
582 if ($elem eq 'nochecknoarchive') {
583 $CheckNoArchive = 0; last FMTSW;
584 }
585 if ($elem eq 'noconlen') { # Ignore content-length
586 $CONLEN = 0; last FMTSW;
587 }
588 if ($elem eq 'nodecodeheads') { # Don't decode charsets
589 $DecodeHeads = 0; last FMTSW;
590 }
591 if ($elem eq 'nodoc') { # Do not link to docs
592 $NODOC = 1; last FMTSW;
593 }
594 if ($elem eq 'nofolrefs') { # Don't print explicit fol/refs
595 $DoFolRefs = 0; last FMTSW;
596 }
597 if ($elem eq 'nogzipfiles') { # Don't gzip files
598 $GzipFiles = 0; last FMTSW;
599 }
600 if ($elem eq 'nogziplinks') { # Don't add ".gz" to links
601 $GzipLinks = 0; last FMTSW;
602 }
603 if ($elem eq 'nokeeponrmm') { # Remove files on rmm
604 $KeepOnRmm = 0;
605 last FMTSW;
606 }
607 if ($elem eq 'nomailto') { # Do not convert e-mail addrs
608 $NOMAILTO = 1; last FMTSW;
609 }
610 if ($elem eq 'nomain') { # No main index
611 $MAIN = 0; last FMTSW;
612 }
613 if ($elem eq 'nomodtime') { # Do not change mod times
614 $MODTIME = 0; last FMTSW;
615 }
616 if ($elem eq 'nomsgpgs') { # Do not print message pages
617 $NoMsgPgs = 1; last FMTSW;
618 }
619 if ($elem eq 'nomultipg') { # Single page index
620 $MULTIIDX = 0; last FMTSW;
621 }
622 if ($elem eq 'nonews') { # Ignore news for linking
623 $NONEWS = 1; last FMTSW;
624 }
625 if ($elem eq 'noposixstrftime') { # Do not use POSIX::strftime()
626 $POSIXstrftime = 0;
627 last FMTSW;
628 }
629 if ($elem eq 'noreverse') { # Sort in normal order
630 $REVSORT = 0; last FMTSW;
631 }
632 if ($elem eq 'nosaveresources') { # Do not save resources
633 $SaveRsrcs = 0;
634 last FMTSW;
635 }
636 if ($elem eq 'nosort') { # Do not sort messages
637 $NOSORT = 1;
638 last FMTSW;
639 }
640 if ($elem eq 'nospammode') { # Do not do anti-spam stuff
641 $SpamMode = 0; last FMTSW;
642 }
643 if ($elem eq 'nosubjectthreads') { # No check subjects for threads
644 $NoSubjectThreads = 1;
645 last FMTSW;
646 }
647 if ($elem eq 'nosubjecttxt') { # Text to use if no subject
648 $NoSubjectTxt = &get_elem_content($handle, $elem, $chop);
649 last FMTSW;
650 }
651 if ($elem eq 'nosubsort') { # Do not sort msgs by subject
652 $SUBSORT = 0;
653 last FMTSW;
654 }
655 if ($elem eq 'note') { # Annotation markup
656 $NOTE = &get_elem_content($handle, $elem, $chop);
657 last FMTSW;
658 }
659 if ($elem eq 'notedir') { # Notes directory
660 if ($line = &get_elem_last_line($handle, $elem)) {
661 $NoteDir = $line;
662 }
663 last FMTSW;
664 }
665 if ($elem eq 'noteia') { # No Annotation markup
666 $NOTEIA = &get_elem_content($handle, $elem, $chop);
667 last FMTSW;
668 }
669 if ($elem eq 'noteicon') { # Note icon
670 $NOTEICON = &get_elem_content($handle, $elem, $chop);
671 last FMTSW;
672 }
673 if ($elem eq 'noteiconia') { # Note icon when no annotation
674 $NOTEICONIA = &get_elem_content($handle, $elem, $chop);
675 last FMTSW;
676 }
677 if ($elem eq 'nothread') { # No thread index
678 $THREAD = 0; last FMTSW;
679 }
680 if ($elem eq 'notreverse') { # Thread sort in normal order
681 $TREVERSE = 0; last FMTSW;
682 }
683 if ($elem eq 'notsubsort' ||
684 $elem eq 'tnosubsort') { # No subject order for threads
685 $TSUBSORT = 0;
686 last FMTSW;
687 }
688 if ($elem eq 'notsort' ||
689 $elem eq 'tnosort') { # Raw order for threads
690 $TNOSORT = 1; $TSUBSORT = 0;
691 last FMTSW;
692 }
693 if ($elem eq 'nourl') { # Ignore URLs
694 $NOURL = 1; last FMTSW;
695 }
696 if ($elem eq 'nouselocaltime') { # Not using localtime
697 $UseLocalTime = 0; last FMTSW;
698 }
699 if ($elem eq 'nousinglastpg') { # Not using $LASTPG$
700 $UsingLASTPG = 0; last FMTSW;
701 }
702 if ($elem eq 'otherindexes') { # Other indexes
703 @OtherIdxs = () if $override;
704 unshift(@OtherIdxs, &get_pathname_content($handle, $elem));
705 last FMTSW;
706 }
707 if ($elem eq 'perlinc') { # Define perl search paths
708 @PerlINC = () if $override;
709 unshift(@PerlINC, &get_pathname_content($handle, $elem));
710 last FMTSW;
711 }
712 if ($elem eq 'posixstrftime') { # Use POSIX::strftime()
713 $POSIXstrftime = 1;
714 last FMTSW;
715 }
716 if ($elem eq 'prevbutton') { # Prev button link in message
717 $PREVBUTTON = &get_elem_content($handle, $elem, $chop);
718 last FMTSW;
719 }
720 if ($elem eq 'prevbuttonia') { # Prev i/a button link
721 $PREVBUTTONIA = &get_elem_content($handle, $elem, $chop);
722 last FMTSW;
723 }
724 if ($elem eq 'prevlink') { # Prev link in message
725 $PREVLINK = &get_elem_content($handle, $elem, $chop);
726 last FMTSW;
727 }
728 if ($elem eq 'prevlinkia') { # Prev i/a link
729 $PREVLINKIA = &get_elem_content($handle, $elem, $chop);
730 last FMTSW;
731 }
732 if ($elem eq 'prevpglink') { # Prev page link for index
733 $PREVPGLINK = &get_elem_content($handle, $elem, $chop);
734 last FMTSW;
735 }
736 if ($elem eq 'prevpglinkia') {
737 $PREVPGLINKIA = &get_elem_content($handle, $elem, $chop);
738 last FMTSW;
739 }
740 if ($elem eq 'refsbegin') { # Explicit ref links begin
741 $REFSBEGIN = &get_elem_content($handle, $elem, $chop);
742 last FMTSW;
743 }
744 if ($elem eq 'refsend') { # Explicit ref links end
745 $REFSEND = &get_elem_content($handle, $elem, $chop);
746 last FMTSW;
747 }
748 if ($elem eq 'refslitxt') { # Explicit ref link
749 $REFSLITXT = &get_elem_content($handle, $elem, $chop);
750 last FMTSW;
751 }
752 if ($elem eq 'reverse') { # Reverse sort
753 $REVSORT = 1;
754 last FMTSW;
755 }
756 if ($elem eq 'saveresources') { # Save resources in db
757 $SaveRsrcs = 1;
758 last FMTSW;
759 }
760 if ($elem eq 'sort') { # Sort messages by date
761 $NOSORT = 0;
762 $AUTHSORT = 0; $SUBSORT = 0;
763 last FMTSW;
764 }
765 if ($elem eq 'spammode') { # Obfsucate/hide addresses
766 $SpamMode = 1; last FMTSW;
767 }
768 if ($elem eq 'ssmarkup') { # Initial page markup
769 $SSMARKUP = &get_elem_content($handle, $elem, $chop);
770 last FMTSW;
771 }
772 if ($elem eq 'msgpgssmarkup') { # Initial message page markup
773 $MSGPGSSMARKUP = &get_elem_content($handle, $elem, $chop);
774 last FMTSW;
775 }
776 if ($elem eq 'idxpgssmarkup') { # Initial index page markup
777 $IDXPGSSMARKUP = &get_elem_content($handle, $elem, $chop);
778 last FMTSW;
779 }
780 if ($elem eq 'tidxpgssmarkup') { # Initial thread idx page markup
781 $TIDXPGSSMARKUP = &get_elem_content($handle, $elem, $chop);
782 last FMTSW;
783 }
784 if ($elem eq 'subjectarticlerxp') { # Regex for language articles
785 if ($line = &get_elem_last_line($handle, $elem)) {
786 $SubArtRxp = $line;
787 }
788 last FMTSW;
789 }
790 if ($elem eq 'subjectreplyrxp') { # Regex for reply text
791 if ($line = &get_elem_last_line($handle, $elem)) {
792 $SubReplyRxp = $line;
793 }
794 last FMTSW;
795 }
796 if ($elem eq 'subjectstripcode') { # Code to strip subjects
797 $SubStripCode = &get_elem_content($handle, $elem, $chop);
798 last FMTSW;
799 }
800 if ($elem eq 'subjectthreads') { # Check subjects for threads
801 $NoSubjectThreads = 0;
802 last FMTSW;
803 }
804 if ($elem eq 'subsort') { # Sort messages by subject
805 $SUBSORT = 1;
806 $AUTHSORT = 0; $NOSORT = 0;
807 last FMTSW;
808 }
809 if ($elem eq 'subjectbegin') { # Begin for subject group
810 $SUBJECTBEG = &get_elem_content($handle, $elem, $chop);
811 last FMTSW;
812 }
813 if ($elem eq 'subjectend') { # End for subject group
814 $SUBJECTEND = &get_elem_content($handle, $elem, $chop);
815 last FMTSW;
816 }
817 if ($elem eq 'subjectheader') {
818 $SUBJECTHEADER = &get_elem_content($handle, $elem, $chop);
819 last FMTSW;
820 }
821 if ($elem eq 'tcontbegin') { # Thread cont. start
822 $TCONTBEG = &get_elem_content($handle, $elem, $chop);
823 last FMTSW;
824 }
825 if ($elem eq 'tcontend') { # Thread cont. end
826 $TCONTEND = &get_elem_content($handle, $elem, $chop);
827 last FMTSW;
828 }
829 if ($elem eq 'textclipfunc') { # Text clipping function
830 $TextClipFunc = undef;
831 $TextClipSrc = undef;
832 while (defined($line = <$handle>)) {
833 last if $line =~ /^\s*<\/textclipfunc\s*>/i;
834 next if $line =~ /^\s*$/;
835 $line =~ s/\s//g;
836 ($TextClipFunc,$TextClipSrc) = split(/;/,$line,2);
837 }
838 }
839 if ($elem eq 'tfirstpglink') { # First thread page link
840 $TFIRSTPGLINK = &get_elem_content($handle, $elem, $chop);
841 last FMTSW;
842 }
843 if ($elem eq 'tfoot') { # Thread idx foot
844 $TFOOT = &get_elem_content($handle, $elem, $chop);
845 last FMTSW;
846 }
847 if ($elem eq 'thead') { # Thread idx head
848 $THEAD = &get_elem_content($handle, $elem, $chop);
849 last FMTSW;
850 }
851 if ($elem eq 'tidxfname') { # Threaded idx filename
852 if ($line = &get_elem_last_line($handle, $elem)) {
853 $line =~ s/\s//g;
854 $TIDXNAME = $line;
855 }
856 last FMTSW;
857 }
858 if ($elem eq 'tidxlabel') { # Thread index label
859 $TIDXLABEL = &get_elem_content($handle, $elem, $chop);
860 last FMTSW;
861 }
862 if ($elem eq 'tidxpgbegin') { # Opening markup of thread idx
863 $TIDXPGBEG = &get_elem_content($handle, $elem, $chop);
864 last FMTSW;
865 }
866 if ($elem eq 'tidxpgend') { # Closing markup of thread idx
867 $TIDXPGEND = &get_elem_content($handle, $elem, $chop);
868 last FMTSW;
869 }
870 if ($elem eq 'tidxprefix') { # Prefix for thread idx pages
871 if ($line = &get_elem_last_line($handle, $elem)) {
872 $line =~ s/\s//g;
873 $TIDXPREFIX = $line;
874 }
875 last FMTSW;
876 }
877 if ($elem eq 'timezones') { # Time zones
878 if ($override) { %ZoneUD = (); }
879 while (defined($line = <$handle>)) {
880 last if $line =~ /^\s*<\/timezones\s*>/i;
881 $line =~ s/\s//g; $line =~ tr/a-z/A-Z/;
882 ($acro,$hr) = split(/:/,$line);
883 $acro =~ tr/a-z/A-Z/;
884 $ZoneUD{$acro} = $hr;
885 }
886 last FMTSW;
887 }
888 if ($elem eq 'tindentbegin') { # Thread indent start
889 $TINDENTBEG = &get_elem_content($handle, $elem, $chop);
890 last FMTSW;
891 }
892 if ($elem eq 'tindentend') { # Thread indent end
893 $TINDENTEND = &get_elem_content($handle, $elem, $chop);
894 last FMTSW;
895 }
896 if ($elem eq 'title') { # Title of index page
897 $TITLE = &get_elem_content($handle, $elem, $chop);
898 last FMTSW;
899 }
900 if ($elem eq 'tlastpglink') { # Last thread page link
901 $TLASTPGLINK = &get_elem_content($handle, $elem, $chop);
902 last FMTSW;
903 }
904 if ($elem eq 'tlevels') { # Level of threading
905 if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') {
906 $TLEVELS = $tmp;
907 }
908 last FMTSW;
909 }
910 if ($elem eq 'tlinone') { # Markup for missing message
911 $TLINONE = &get_elem_content($handle, $elem, $chop);
912 last FMTSW;
913 }
914 if ($elem eq 'tlinoneend') { # End markup for missing msg
915 $TLINONEEND = &get_elem_content($handle, $elem, $chop);
916 last FMTSW;
917 }
918 if ($elem eq 'tlitxt') { # Thread idx list item
919 $TLITXT = &get_elem_content($handle, $elem, $chop);
920 last FMTSW;
921 }
922 if ($elem eq 'tliend') { # Thread idx list item end
923 $TLIEND = &get_elem_content($handle, $elem, $chop);
924 last FMTSW;
925 }
926 if ($elem eq 'toplinks') { # Top links in message
927 $TOPLINKS = &get_elem_content($handle, $elem, $chop);
928 last FMTSW;
929 }
930 if ($elem eq 'tslice') {
931 ($TSliceNBefore, $TSliceNAfter, $TSliceInclusive) =
932 &get_list_content($handle, $elem);
933 last FMTSW;
934 }
935 if ($elem eq 'tslicebeg') { # Start of thread slice
936 $TSLICEBEG = &get_elem_content($handle, $elem, $chop);
937 last FMTSW;
938 }
939 if ($elem eq 'tsliceend') { # End of thread slice
940 $TSLICEEND = &get_elem_content($handle, $elem, $chop);
941 last FMTSW;
942 }
943 if ($elem eq 'tslicelevels') { # Level of slice threading
944 if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') {
945 $TSLICELEVELS = $tmp;
946 }
947 last FMTSW;
948 }
949 if ($elem eq 'tslicesingletxt') {
950 $TSLICESINGLETXT = &get_elem_content($handle, $elem, $chop);
951 last FMTSW;
952 }
953 if ($elem eq 'tslicetopbegin') {
954 $TSLICETOPBEG = &get_elem_content($handle, $elem, $chop);
955 last FMTSW;
956 }
957 if ($elem eq 'tslicetopend') {
958 $TSLICETOPEND = &get_elem_content($handle, $elem, $chop);
959 last FMTSW;
960 }
961 if ($elem eq 'tslicesublistbeg') {
962 $TSLICESUBLISTBEG = &get_elem_content($handle, $elem, $chop);
963 last FMTSW;
964 }
965 if ($elem eq 'tslicesublistend') {
966 $TSLICESUBLISTEND = &get_elem_content($handle, $elem, $chop);
967 last FMTSW;
968 }
969 if ($elem eq 'tslicelitxt') {
970 $TSLICELITXT = &get_elem_content($handle, $elem, $chop);
971 last FMTSW;
972 }
973 if ($elem eq 'tsliceliend') {
974 $TSLICELIEND = &get_elem_content($handle, $elem, $chop);
975 last FMTSW;
976 }
977 if ($elem eq 'tslicelinone') {
978 $TSLICELINONE = &get_elem_content($handle, $elem, $chop);
979 last FMTSW;
980 }
981 if ($elem eq 'tslicelinoneend') {
982 $TSLICELINONEEND = &get_elem_content($handle, $elem, $chop);
983 last FMTSW;
984 }
985 if ($elem eq 'tslicesubjectbeg') {
986 $TSLICESUBJECTBEG = &get_elem_content($handle, $elem, $chop);
987 last FMTSW;
988 }
989 if ($elem eq 'tslicesubjectend') {
990 $TSLICESUBJECTEND = &get_elem_content($handle, $elem, $chop);
991 last FMTSW;
992 }
993 if ($elem eq 'tsliceindentbegin') {
994 $TSLICEINDENTBEG = &get_elem_content($handle, $elem, $chop);
995 last FMTSW;
996 }
997 if ($elem eq 'tsliceindentend') {
998 $TSLICEINDENTEND = &get_elem_content($handle, $elem, $chop);
999 last FMTSW;
1000 }
1001 if ($elem eq 'tslicecontbegin') {
1002 $TSLICECONTBEG = &get_elem_content($handle, $elem, $chop);
1003 last FMTSW;
1004 }
1005 if ($elem eq 'tslicecontend') {
1006 $TSLICECONTEND = &get_elem_content($handle, $elem, $chop);
1007 last FMTSW;
1008 }
1009 if ($elem eq 'tslicesingletxtcur') {
1010 $TSLICESINGLETXTCUR = &get_elem_content($handle, $elem, $chop);
1011 last FMTSW;
1012 }
1013 if ($elem eq 'tslicetopbegincur') {
1014 $TSLICETOPBEGCUR = &get_elem_content($handle, $elem, $chop);
1015 last FMTSW;
1016 }
1017 if ($elem eq 'tslicetopendcur') {
1018 $TSLICETOPENDCUR = &get_elem_content($handle, $elem, $chop);
1019 last FMTSW;
1020 }
1021 if ($elem eq 'tslicelitxtcur') {
1022 $TSLICELITXTCUR = &get_elem_content($handle, $elem, $chop);
1023 last FMTSW;
1024 }
1025 if ($elem eq 'tsliceliendcur') {
1026 $TSLICELIENDCUR = &get_elem_content($handle, $elem, $chop);
1027 last FMTSW;
1028 }
1029 if ($elem eq 'tsort') { # Date order for threads
1030 $TNOSORT = 0; $TSUBSORT = 0;
1031 last FMTSW;
1032 }
1033 if ($elem eq 'tsubsort') { # Subject order for threads
1034 $TNOSORT = 0; $TSUBSORT = 1;
1035 last FMTSW;
1036 }
1037 if ($elem eq 'tsublistbeg') { # List begin in sub-thread
1038 $TSUBLISTBEG = &get_elem_content($handle, $elem, $chop);
1039 last FMTSW;
1040 }
1041 if ($elem eq 'tsublistend') { # List end in sub-thread
1042 $TSUBLISTEND = &get_elem_content($handle, $elem, $chop);
1043 last FMTSW;
1044 }
1045 if ($elem eq 'tsubjectbeg') { # Begin markup for sub thread
1046 $TSUBJECTBEG = &get_elem_content($handle, $elem, $chop);
1047 last FMTSW;
1048 }
1049 if ($elem eq 'tsubjectend') { # End markup for sub thread
1050 $TSUBJECTEND = &get_elem_content($handle, $elem, $chop);
1051 last FMTSW;
1052 }
1053 if ($elem eq 'tsingletxt') { # Markup for single msg
1054 $TSINGLETXT = &get_elem_content($handle, $elem, $chop);
1055 last FMTSW;
1056 }
1057 if ($elem eq 'ttopbegin') { # Begin for top of a thread
1058 $TTOPBEG = &get_elem_content($handle, $elem, $chop);
1059 last FMTSW;
1060 }
1061 if ($elem eq 'ttopend') { # End for a thread
1062 $TTOPEND = &get_elem_content($handle, $elem, $chop);
1063 last FMTSW;
1064 }
1065 if ($elem eq 'ttitle') { # Title of threaded idx
1066 $TTITLE = &get_elem_content($handle, $elem, $chop);
1067 last FMTSW;
1068 }
1069 if ($elem eq 'thread') { # Create thread index
1070 $THREAD = 1; last FMTSW;
1071 }
1072 if ($elem eq 'tnextbutton') { # Thread Next button link
1073 $TNEXTBUTTON = &get_elem_content($handle, $elem, $chop);
1074 last FMTSW;
1075 }
1076 if ($elem eq 'tnextbuttonia') {
1077 $TNEXTBUTTONIA = &get_elem_content($handle, $elem, $chop);
1078 last FMTSW;
1079 }
1080 if ($elem eq 'tnextinbutton') { # Within Thread Next button link
1081 $TNEXTINBUTTON = &get_elem_content($handle, $elem, $chop);
1082 last FMTSW;
1083 }
1084 if ($elem eq 'tnextinbuttonia') {
1085 $TNEXTINBUTTONIA = &get_elem_content($handle, $elem, $chop);
1086 last FMTSW;
1087 }
1088 if ($elem eq 'tnextinlink') { # Within Thread Next link
1089 $TNEXTINLINK = &get_elem_content($handle, $elem, $chop);
1090 last FMTSW;
1091 }
1092 if ($elem eq 'tnextinlinkia') {
1093 $TNEXTINLINKIA = &get_elem_content($handle, $elem, $chop);
1094 last FMTSW;
1095 }
1096 if ($elem eq 'tnextlink') { # Thread Next link
1097 $TNEXTLINK = &get_elem_content($handle, $elem, $chop);
1098 last FMTSW;
1099 }
1100 if ($elem eq 'tnextlinkia') {
1101 $TNEXTLINKIA = &get_elem_content($handle, $elem, $chop);
1102 last FMTSW;
1103 }
1104 if ($elem eq 'tnextpglink') { # Thread next page link
1105 $TNEXTPGLINK = &get_elem_content($handle, $elem, $chop);
1106 last FMTSW;
1107 }
1108 if ($elem eq 'tnextpglinkia') {
1109 $TNEXTPGLINKIA = &get_elem_content($handle, $elem, $chop);
1110 last FMTSW;
1111 }
1112 if ($elem eq 'tprevbutton') { # Thread Prev button link
1113 $TPREVBUTTON = &get_elem_content($handle, $elem, $chop);
1114 last FMTSW;
1115 }
1116 if ($elem eq 'tprevbuttonia') {
1117 $TPREVBUTTONIA = &get_elem_content($handle, $elem, $chop);
1118 last FMTSW;
1119 }
1120 if ($elem eq 'tprevinbutton') { # Within thread previous button
1121 $TPREVINBUTTON = &get_elem_content($handle, $elem, $chop);
1122 last FMTSW;
1123 }
1124 if ($elem eq 'tprevinbuttonia') {
1125 $TPREVINBUTTONIA = &get_elem_content($handle, $elem, $chop);
1126 last FMTSW;
1127 }
1128 if ($elem eq 'tprevinlink') { # Within thread previous link
1129 $TPREVINLINK = &get_elem_content($handle, $elem, $chop);
1130 last FMTSW;
1131 }
1132 if ($elem eq 'tprevinlinkia') {
1133 $TPREVINLINKIA = &get_elem_content($handle, $elem, $chop);
1134 last FMTSW;
1135 }
1136 if ($elem eq 'tprevlink') { # Thread previous link
1137 $TPREVLINK = &get_elem_content($handle, $elem, $chop);
1138 last FMTSW;
1139 }
1140 if ($elem eq 'tprevlinkia') {
1141 $TPREVLINKIA = &get_elem_content($handle, $elem, $chop);
1142 last FMTSW;
1143 }
1144 if ($elem eq 'tprevpglink') { # Thread previous page link
1145 $TPREVPGLINK = &get_elem_content($handle, $elem, $chop);
1146 last FMTSW;
1147 }
1148 if ($elem eq 'tprevpglinkia') {
1149 $TPREVPGLINKIA = &get_elem_content($handle, $elem, $chop);
1150 last FMTSW;
1151 }
1152 if ($elem eq 'treverse') { # Reverse order of threads
1153 $TREVERSE = 1; last FMTSW;
1154 }
1155 if ($elem eq 'tnexttopbutton') { # Next thread button
1156 $TNEXTTOPBUTTON = &get_elem_content($handle, $elem, $chop);
1157 last FMTSW;
1158 }
1159 if ($elem eq 'tnexttopbuttonia') {
1160 $TNEXTTOPBUTTONIA = &get_elem_content($handle, $elem, $chop);
1161 last FMTSW;
1162 }
1163 if ($elem eq 'tnexttoplink') { # Next thread link
1164 $TNEXTTOPLINK = &get_elem_content($handle, $elem, $chop);
1165 last FMTSW;
1166 }
1167 if ($elem eq 'tnexttoplinkia') {
1168 $TNEXTTOPLINKIA = &get_elem_content($handle, $elem, $chop);
1169 last FMTSW;
1170 }
1171 if ($elem eq 'tprevtopbutton') { # Previous thread button
1172 $TPREVTOPBUTTON = &get_elem_content($handle, $elem, $chop);
1173 last FMTSW;
1174 }
1175 if ($elem eq 'tprevtopbuttonia') {
1176 $TPREVTOPBUTTONIA = &get_elem_content($handle, $elem, $chop);
1177 last FMTSW;
1178 }
1179 if ($elem eq 'tprevtoplink') { # Previous thread link
1180 $TPREVTOPLINK = &get_elem_content($handle, $elem, $chop);
1181 last FMTSW;
1182 }
1183 if ($elem eq 'tprevtoplinkia') {
1184 $TPREVTOPLINKIA = &get_elem_content($handle, $elem, $chop);
1185 last FMTSW;
1186 }
1187 if ($elem eq 'umask') { # Umask of process
1188 if ($line = &get_elem_last_line($handle, $elem)) {
1189 $line =~ s/\s//g;
1190 $UMASK = $line;
1191 }
1192 last FMTSW;
1193 }
1194 if ($elem eq 'uselocaltime') { # Use localtime for day groups
1195 $UseLocalTime = 1; last FMTSW;
1196 }
1197 if ($elem eq 'usinglastpg') {
1198 $UsingLASTPG = 1; last FMTSW;
1199 }
1200 if ($elem eq 'varregex') { # Regex matching rc vars
1201 $tmp = &get_elem_last_line($handle, $elem);
1202 # only take value if not blank
1203 $VarExp = $tmp if $tmp =~ /\S/;
1204 last FMTSW;
1205 }
1206 if ($elem eq 'weekdays') { # Full weekday name
1207 @a = &get_list_content($handle, $elem);
1208 if (scalar(@a)) {
1209 @Weekdays = @a;
1210 }
1211 last FMTSW;
1212 }
1213 if ($elem eq 'weekdaysabr') { # Abbreviated weekday name
1214 @a = &get_list_content($handle, $elem);
1215 if (scalar(@a)) {
1216 @weekdays = @a;
1217 }
1218 last FMTSW;
1219 }
1220
1221 } ## End FMTSW
1222 }
1223 close($handle);
1224 1;
1225}
1226
1227##----------------------------------------------------------------------
1228sub get_elem_content {
1229 my($filehandle, $gi, $chop) = @_;
1230 my($ret) = '';
1231
1232 while (<$filehandle>) {
1233 last if /^\s*<\/$gi\s*>/i;
1234 $ret .= $_;
1235 }
1236 $ret =~ s/\r?\n?$// if $chop;
1237 $ret;
1238}
1239
1240##----------------------------------------------------------------------
1241sub get_elem_int {
1242 my($filehandle, $gi, $abs) = @_;
1243 my($ret) = '';
1244
1245 while (<$filehandle>) {
1246 last if /^\s*<\/$gi\s*>/i;
1247 next unless /^\s*[-+]?\d+\s*$/;
1248 s/[+\s]//g;
1249 s/-// if $abs;
1250 $ret = $_;
1251 }
1252 $ret;
1253}
1254
1255##----------------------------------------------------------------------
1256sub get_elem_last_line {
1257 my($filehandle, $gi) = @_;
1258 my($ret) = '';
1259
1260 while (<$filehandle>) {
1261 last if /^\s*<\/$gi\s*>/i;
1262 next unless /\S/;
1263 $ret = $_;
1264 }
1265 $ret =~ s/\r?\n?$//;
1266 $ret;
1267}
1268
1269##----------------------------------------------------------------------
1270sub get_list_content {
1271 my($filehandle, $gi) = @_;
1272 my(@items) = ();
1273
1274 while (<$filehandle>) {
1275 last if /^\s*<\/$gi\s*>/i;
1276 next unless /\S/;
1277 s/\r?\n?$//;
1278 push(@items, split(/[:;]/, $_));
1279 }
1280 @items;
1281}
1282
1283##----------------------------------------------------------------------
1284sub get_pathname_content {
1285 my($filehandle, $gi) = @_;
1286 my(@items) = ();
1287
1288 while (<$filehandle>) {
1289 last if /^\s*<\/$gi\s*>/i;
1290 next unless /\S/;
1291 s/\r?\n?$//;
1292 push(@items, split(/$PATHSEP/o, $_));
1293 }
1294 @items;
1295}
1296
1297##---------------------------------------------------------------------------##
12981;