X-Git-Url: https://git.exim.org/exim-website.git/blobdiff_plain/4441f3467c4aa8b521852269220805ba411c25ac..01b57e68751c35f6b1d1240b28f32bc990b5ca27:/filter/process_re2filtermatch.pl diff --git a/filter/process_re2filtermatch.pl b/filter/process_re2filtermatch.pl index c826702..851a40f 100644 --- a/filter/process_re2filtermatch.pl +++ b/filter/process_re2filtermatch.pl @@ -1,22 +1,50 @@ #!/usr/bin/perl # use strict; +use FileHandle; -my $re; -while(<>) { - chomp(); - # dispose of comments with their leading spaces - s/\s+\#.*$//; - # recode \" -> " - s/\\\"/\"/g; - # double all \ (twice) - s/\\/\\\\/g; - s/\\/\\\\/g; - # escape " again - s/\"/\\\"/g; - # remove all space - s/\s+//g; - # add to re - $re .= $_; + + +sub process_file { + my $fn = shift; + + my $re; + print STDERR "Opening $fn\n"; + my $fh = FileHandle->new($fn, 'r') || die $!; + while (<$fh>) { + chomp(); + # process includes + if (/^\#include\s/) { + my($junk, $nfn) = split; + $re .= process_file($nfn); + next; + } + # ignore comments starting at the begining of the line + next if (/^\#/); + # dispose of comments with their leading spaces + s/\s+\#.*$//; + # recode \" -> " + s/\\\"/\"/g; + # double all \ (twice) + s/\\/\\\\/g; + s/\\/\\\\/g; + # escape " again + s/\"/\\\"/g; + # remove all space + s/\s+//g; + # add to re + $re .= $_; + } + return $re; +} + + + +# main +{ + my $re; + while($_ = shift) { + $re .= process_file($_); + } + print "\"$re\"\n"; } -print "\"$re\"\n";