forked from extern/shorewall_code
Simplify variable substitution
This commit is contained in:
parent
d4d285af39
commit
8f9d5a967b
@ -1885,25 +1885,23 @@ sub read_a_line(;$) {
|
|||||||
#
|
#
|
||||||
# Expand Shell Variables using %params and %ENV
|
# Expand Shell Variables using %params and %ENV
|
||||||
#
|
#
|
||||||
# $1 $2 $3 - $4
|
# $1 $2 $3 - $4
|
||||||
while ( $currentline =~ m( ^(.*?) \$({)? (\w+) (?(2)}) (.*)$ )x ) {
|
while ( $currentline =~ m( ^(.*?) \$({)? (\w+) (?(2)}) (.*)$ )x ) {
|
||||||
|
|
||||||
unless ( exists $params{$3} ) {
|
my ( $first, $var, $rest ) = ( $1, $3, $4);
|
||||||
#
|
|
||||||
# Given the way that getparams works, this should never help but better safe than sorry
|
my $val;
|
||||||
#
|
|
||||||
$params{$3} = $ENV{$3} if exists $ENV{$3};
|
if ( $var =~ /^\$\d+$/ ) {
|
||||||
|
fatal_error "Undefined parameter (\$$var)" unless exists $actparms{$var};
|
||||||
|
$val = $actparms{$var};
|
||||||
|
} else {
|
||||||
|
fatal_error "Undefined shell variable (\$$var)" unless exists $params{$var};
|
||||||
|
$val = $params{$var};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$val = '' unless defined $val;
|
||||||
my $val = exists $params{$3} ? $params{$3} : $actparms{$3};
|
$currentline = join( '', $first , $val , $rest );
|
||||||
|
|
||||||
unless ( defined $val ) {
|
|
||||||
fatal_error "Undefined shell variable (\$$3)" unless exists $params{$3} || exists $ENV{$3};
|
|
||||||
$val = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$currentline = join( '', $1 , $val , $4 );
|
|
||||||
fatal_error "Variable Expansion Loop" if ++$count > 100;
|
fatal_error "Variable Expansion Loop" if ++$count > 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user