summaryrefslogtreecommitdiff
path: root/debian/local/parse_mc
blob: 3ce510d4415df737e844856e5d76676eb38bda06 (plain)
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.4 2010-11-03 22:21:32 cowboy Exp $
#
# Parse Sendmail config for databases
#
# Copyright 2000-2010 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.4';
$main::program_date    = '2010-11-03 22:21:32 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);