open CF, $ARGV[2] or die "Unable to open $ARGV[2]";
my %options = ();
my %vars = ();
+sub opt {
+ my ($k,$v) = @_;
+ $vars{$k} = $v;
+ $options{$k} = 1 if ($k =~ /^CONFIG_/);
+}
+foreach my $k (keys %ENV) {
+ opt($k, $ENV{$k});
+}
while (<CF>) {
chomp;
if (my ($k,$v) = /^(\w+)=(.*)/) {
$v =~ s/\s+$//;
- $vars{$k} = $v;
- $options{$k} = 1 if ($k =~ /^CONFIG_/);
+ opt($k, $v);
}
}
close CF;
-my $opt_regex = join("|", keys %options);
-sub eval_expr { $_ = "@_"; s/\b($opt_regex)\b/ 1 /g if $opt_regex; s/\bCONFIG_\w+\b/ 0 /g; return eval $_; }
+sub eval_expr {
+ $_ = shift @_;
+ s/\b(CONFIG_\w+)\b/defined($options{$1}) ? 1 : 0/ge;
+ return eval $_;
+}
open IN, $ARGV[0] or die "Unable to open $ARGV[0]";
open OUT, ">$ARGV[1]" or die "Unable to create $ARGV[1]";