|
Packit |
fd8b60 |
# -*- perl -*-
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
sub usage {
|
|
Packit |
fd8b60 |
print STDERR "usage: $0 -oOutputFile PARM=value ...\n";
|
|
Packit |
fd8b60 |
print STDERR " where acceptable PARM values are:\n";
|
|
Packit |
fd8b60 |
print STDERR "\t", join(' ', @parms), "\n";
|
|
Packit |
fd8b60 |
exit(1);
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
%parm = ();
|
|
Packit |
fd8b60 |
sub run {
|
|
Packit |
fd8b60 |
my $arg;
|
|
Packit |
fd8b60 |
my $outfile;
|
|
Packit |
fd8b60 |
my %allowed_parms = ();
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
foreach $arg (@parms) { $allowed_parms{$arg} = 1; }
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
foreach $arg (@ARGV) {
|
|
Packit |
fd8b60 |
if ($arg =~ /^-o./) {
|
|
Packit |
fd8b60 |
if (defined $outfile) {
|
|
Packit |
fd8b60 |
die "$0: Output file specified multiple times\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
$outfile = substr($arg, 2);
|
|
Packit |
fd8b60 |
} else {
|
|
Packit |
fd8b60 |
my @words = split '=', $arg;
|
|
Packit |
fd8b60 |
if ($#words != 1) {
|
|
Packit |
fd8b60 |
print STDERR "$0: $arg : #words = $#words\n";
|
|
Packit |
fd8b60 |
&usage;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
if (!defined $allowed_parms{$words[0]}) {
|
|
Packit |
fd8b60 |
print STDERR "$0: Unknown parameter $words[0]\n";
|
|
Packit |
fd8b60 |
&usage;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
$parm{$words[0]} = $words[1];
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
my $p;
|
|
Packit |
fd8b60 |
my $subst = "";
|
|
Packit |
fd8b60 |
#print "Keys defined: ", join(' ', keys %parm), "\n";
|
|
Packit |
fd8b60 |
foreach $p (@parms) {
|
|
Packit |
fd8b60 |
if (!defined $parm{$p}) {
|
|
Packit |
fd8b60 |
die "$0: No value supplied for parameter $p\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
# XXX More careful quoting of supplied value!
|
|
Packit |
fd8b60 |
$subst .= "\t\$a =~ s|<$p>|$parm{$p}|go;\n";
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
$subst = "sub do_substitution {\n"
|
|
Packit |
fd8b60 |
. "\tmy(\$a) = \@_;\n"
|
|
Packit |
fd8b60 |
. $subst
|
|
Packit |
fd8b60 |
. "\treturn \$a;\n"
|
|
Packit |
fd8b60 |
. "}\n"
|
|
Packit |
fd8b60 |
. "1;";
|
|
Packit |
fd8b60 |
eval $subst || die;
|
|
Packit |
fd8b60 |
if (defined $outfile) {
|
|
Packit |
fd8b60 |
open OUTFILE, ">$outfile" || die;
|
|
Packit |
fd8b60 |
} else {
|
|
Packit |
fd8b60 |
print STDERR "$0: No output file specified.\n";
|
|
Packit |
fd8b60 |
&usage;
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
print OUTFILE "/*\n";
|
|
Packit |
fd8b60 |
print OUTFILE " * This file is generated, please don't edit it.\n";
|
|
Packit |
fd8b60 |
print OUTFILE " * script: $0\n";
|
|
Packit |
fd8b60 |
print OUTFILE " * args:\n *\t", join("\n *\t", @ARGV), "\n";
|
|
Packit |
fd8b60 |
print OUTFILE " * The rest of this file is copied from a template, with\n";
|
|
Packit |
fd8b60 |
print OUTFILE " * substitutions. See the template for copyright info.\n";
|
|
Packit |
fd8b60 |
print OUTFILE " */\n";
|
|
Packit |
fd8b60 |
while (<DATA>) {
|
|
Packit |
fd8b60 |
print OUTFILE &do_substitution($_);
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
close OUTFILE;
|
|
Packit |
fd8b60 |
exit (0);
|
|
Packit |
fd8b60 |
}
|
|
Packit |
fd8b60 |
|
|
Packit |
fd8b60 |
1;
|