1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/usr/bin/perl -w
#------------------------------------------------------------------------
#
# $Sendmail: parse_mc,v 8.14.2 2007-11-02 22:20:56 cowboy Exp $
#
# Parse Sendmail config for databases
#
# Copyright 2000-2007 Richard Nelson. All Rights Reserved.
#
# Notes (to all):
# * for "define(xxx,...)"; "define(xxx," must be on same line, but the
# rest may be split across multiple lines
# * assumes makemap dbtype /etc/mail/database < /etc/mail/database
#
# Notes (to self):
# *
#
#------------------------------------------------------------------------
# My first perl program (from my first awk program ;-})
#
# Initialization of the perl environment
use strict; # be kosher
use Env; # A few environmental references
use integer; # Peformance
use Getopt::Long; # parameter handling
# Local libraries - for Debian Sendmail Perl helper functions
# BEGIN { $main::my_path = substr($0,$[,rindex($0,'/')) };
use lib ('.', substr($0,$[,rindex($0,'/')), "/usr/share/sendmail");
require Parse_mc;
require Parse_conf;
# Version of this program
#($main::MYNAME = $main::0) =~ s|.*/||;
#$main::Author = "Richard Nelson";
#$main::AuthorMail = "cowboy\@debian.org";
#$main::Version = '$Revision: 2.00 $ ';
$main::program_name = $0;
$main::program_version = '8.14.2';
$main::program_date = '2007-11-02 22:20:56 cowboy';
$main::debug = 0;
#
#------------------------------------------------------------------------------
# Finally, some code (almost)
#------------------------------------------------------------------------------
#
# Argument handling...
$main::opt_help='';
$main::opt_output_file='';
$main::opt_input_file='';
$main::opt_debug='';
my @options = qw(
help|h
output-file|output_file|o:s
input-file|input_file|i:s@
debug!
);
my $result = GetOptions(@options);
if ( ! $result ) {
die "Terminating due to parameter error";
};
if ( $main::opt_help ) {
warn "$main::program_name $main::program_version $main::program_date\n";
warn "$0 \n";
warn " -help\n" if $main::opt_help;
warn " -debug\n" if $main::opt_debug;
warn " -o $main::opt_output_file\n" if $main::opt_output_file;
warn " -i $main::opt_input_file\n" if $main::opt_input_file;
exit 0;
};
${Parse_mc::database_file} = $main::opt_output_file
if $main::opt_output_file;
my $input_files = join(' ', @main::opt_input_file);
# $main::debug is used in parse_mc !
$main::debug = $main::opt_debug || $main::debug;
# Pull in some configuration data
&Parse_conf::read_conf();
my ($ok, $value) = &Parse_conf::get_value('HANDS_OFF');
if ($value ne '0') {
unlink "${Parse_mc::database_file}";
exit;
};
# Let them know wtf is going on...
print STDOUT "Creating ${Parse_mc::database_file}...\n";
# Read the mc/m4 files
&Parse_mc::read_mc($input_files);
# Write out the textual representation
&Parse_mc::write_dbs('', $input_files);
|