diff options
Diffstat (limited to 'install-win32/macro.pl')
-rw-r--r-- | install-win32/macro.pl | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/install-win32/macro.pl b/install-win32/macro.pl index 4705310..08ba58a 100644 --- a/install-win32/macro.pl +++ b/install-win32/macro.pl @@ -15,38 +15,47 @@ $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"; - } + if ($arg =~ /^-/) { + if ($arg =~ /^-D(\w+)(?:=(.*))?$/) { + $Parms{$1} = $2 + } elsif ($arg =~ /-O(.*)$/) { + $open_quote = $1; + } elsif ($arg =~ /-C(.*)$/) { + $close_quote = $1; } else { - open(CONTROL, "< $arg") or die "cannot open $arg"; - while (<CONTROL>) { - chomp; - if (/^define\s+(\w+)\s+['"]?(.+?)['"]?\s*$/) { - $Parms{$1} = $2 - } - } + 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+ - ) + \w+ + ) \s* \Q$close_quote\E }{ $Parms{$1} - }xge; + }xge; print; } |