0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 12:02:28 +02:00
openvpn/install-win32/macro.pl
james 657ecf14ac TAP driver now passes signing tests on Vista x64.
Added new settings to settings.in to better control
build process.

Removed some unneeded JYFIXMEs from source code.


git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@1874 e7ae566f-a301-0410-adde-c780ea21d3b5
2007-04-25 21:37:49 +00:00

62 lines
1.2 KiB
Perl

#!/usr/bin/perl
# Simple macro processor.
# Macros are defined in a control file that follows
# a simple definition-based grammar as documented in the
# trans script. Stdin is then copied to stdout, and any
# occurrence of @@MACRO@@ is substituted. Macros can also
# be specified on the command line.
die "usage: macro [-O<openquote>] [-C<closequote>] [-Dname=var ...] [control-file ...] " if (@ARGV < 1);
%Parms = ();
$open_quote = "@@";
$close_quote = "@@";
while ($arg=shift(@ARGV)) {
if ($arg =~ /^-/) {
if ($arg =~ /^-D(\w+)(?:=(.*))?$/) {
$Parms{$1} = $2
} elsif ($arg =~ /-O(.*)$/) {
$open_quote = $1;
} elsif ($arg =~ /-C(.*)$/) {
$close_quote = $1;
} else {
die "unrecognized option: $arg";
}
} else {
open(CONTROL, "< $arg") or die "cannot open $arg";
while (<CONTROL>) {
if (/^!define\s+(\w+)(?:\s+['"]?(.*?)['"]?)?\s*$/) {
$Parms{$1} = $2;
}
}
}
}
sub print_symbol_table {
foreach my $k (sort (keys(%Parms))) {
my $v = $Parms{$k};
print "[$k] -> \"$v\"\n";
}
}
#print_symbol_table ();
#exit 0;
while (<STDIN>) {
s{
\Q$open_quote\E
\s*
(
\w+
)
\s*
\Q$close_quote\E
}{
$Parms{$1}
}xge;
print;
}