NetBSD/gnu/dist/postfix/mantools/makepostconf

62 lines
1.6 KiB
Perl
Executable File

#!/usr/bin/perl
# Extract parameter definitions from the sample-mumble.cf files in
# order to build the postconf raw data file from which everything
# will be regenerated.
$POSTCONF="postconf";
# Suck in the parameter definition text. Skip non-parameter blocks.
# Strip all but the body text (i.e. strip off the non-comment line
# that shows the default, since we will use postconf output to supply
# the actual values).
while(<>) {
if (/^[^#]/) {
if ($param_name && $saved_text) {
$saved_text =~ s/^(\n|#|\s)+//;
$saved_text =~ s/(\n|#|\s)+$//;
$saved_text =~ s/^# ?/\n/;
$saved_text =~ s/\n# ?/\n/g;
$definition{$param_name} = $saved_text;
$param_name = $saved_text = "";
}
next;
}
if (/^#/ && $param_name) {
$saved_text .= $_;
next;
}
if (/^# The (\S+) (configuration )?parameter/) {
$param_name = $1;
$saved_text = $_;
}
}
# Read all the default parameter values. This also provides us with
# a list of all the parameters that postconf knows about.
open(POSTCONF, "$POSTCONF -d|") || die "cannot run $POSTCONF: !$\n";
while(<POSTCONF>) {
chop;
if (($name, $value) = split(/\s+=\s+/, $_, 2)) {
$defaults{$name} = $value;
} else {
warn "unexpected $POSTCONF output: $_\n";
}
}
close(POSTCONF) || die "$POSTCONF failed: $!\n";
# Print all parameter definition text that we found, and warn about
# missing definition text.
for $param_name (sort keys %defaults) {
if (defined($definition{$param_name})) {
print "#DEFINE $param_name\n\n";
print $definition{$param_name};
print "\n\n";
} else {
warn "No definition found for $param_name\n";
}
}