X-Git-Url: https://git.exim.org/exim-website.git/blobdiff_plain/db453be35770dec364921a866b0874bc59f4d082..6b618dd7553a54296b1d6d0d7f1488c9f00e5814:/filter/mkfilter.pl?ds=sidebyside diff --git a/filter/mkfilter.pl b/filter/mkfilter.pl new file mode 100644 index 0000000..41dbfbb --- /dev/null +++ b/filter/mkfilter.pl @@ -0,0 +1,74 @@ +#!/usr/bin/perl +# +use strict; +use FileHandle; + + + +sub process_refile { + 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_refile($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; +} + + + +sub process_recfile { + 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_recfile($nfn); + next; + } + # skip comment only and blank lines + next if (/^\#/); + next if (/^\s*$/); + $re .= "#\t$_\n"; + } + return $re; +} + + + +# main +{ + while(<>) { + s/\[\[([a-z0-9_]+)\]\]/process_refile($1)/ge; + s/\[\<([a-z0-9_]+)\>\]/process_recfile($1)/ge; + print; + } +}