forked from extern/shorewall_code
Change shell variable resolution order
This commit is contained in:
parent
1e6b7c8130
commit
8a9aaff4e8
@ -1858,16 +1858,19 @@ sub read_a_line(;$) {
|
|||||||
|
|
||||||
my $count = 0;
|
my $count = 0;
|
||||||
#
|
#
|
||||||
# Expand Shell Variables using %params
|
# Expand Shell Variables using %params and %ENV
|
||||||
#
|
#
|
||||||
# $1 $2 $3 - $4
|
# $1 $2 $3 - $4
|
||||||
while ( $currentline =~ m( ^(.*?) \$({)? ([a-zA-Z]\w*) (?(2)}) (.*)$ )x ) {
|
while ( $currentline =~ m( ^(.*?) \$({)? ([a-zA-Z]\w*) (?(2)}) (.*)$ )x ) {
|
||||||
|
|
||||||
|
unless ( exists $params{$3} ) {
|
||||||
|
$params{$3} = $ENV{$3} if exists $ENV{$3};
|
||||||
|
}
|
||||||
|
|
||||||
my $val = $params{$3};
|
my $val = $params{$3};
|
||||||
|
|
||||||
$params{$3} = $ENV{$3} if exists $ENV{$3};
|
|
||||||
|
|
||||||
unless ( defined $val ) {
|
unless ( defined $val ) {
|
||||||
fatal_error "Undefined shell variable (\$$3)" unless exists $params{$3};
|
fatal_error "Undefined shell variable (\$$3)" unless exists $params{$3} || exists $ENV{$3};
|
||||||
$val = '';
|
$val = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2882,9 +2885,8 @@ sub unsupported_yes_no_warning( $ ) {
|
|||||||
# Process the params file
|
# Process the params file
|
||||||
#
|
#
|
||||||
sub get_params() {
|
sub get_params() {
|
||||||
my $fn = find_file 'params';
|
if ( my $fn = find_file 'params' ) {
|
||||||
|
|
||||||
if ( $fn ) {
|
|
||||||
progress_message2 "Processing $fn ...";
|
progress_message2 "Processing $fn ...";
|
||||||
|
|
||||||
my @params = `$globals{SHAREDIRPL}/getparams $fn`;
|
my @params = `$globals{SHAREDIRPL}/getparams $fn`;
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
exported=$(env | sed 's/=.*//');
|
exported=$(env | sed 's/=.*//');
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sigh -- POSIX shells don't support 'typeset' or 'declare'
|
# Sigh -- POSIX shells don't support 'typeset +x' or 'declare +x'
|
||||||
#
|
#
|
||||||
|
|
||||||
for v in $exported; do
|
for v in $exported; do
|
||||||
|
@ -30,13 +30,14 @@ VI. PROBLEMS CORRECTED AND NEW FEATURES IN PRIOR RELEASES
|
|||||||
|
|
||||||
1) Previously, /usr/share/shorewall/compiler.pl expected the contents
|
1) Previously, /usr/share/shorewall/compiler.pl expected the contents
|
||||||
of the params file to be passed in the environment. Now, the
|
of the params file to be passed in the environment. Now, the
|
||||||
compiler invokes the shell program /usr/share/shorewall/getparams
|
compiler invokes a small shell program
|
||||||
to process the file and to pass the (variable,value) pairs back to
|
(/usr/share/shorewall/getparams) to process the file and to pass
|
||||||
the compiler.
|
the (variable,value) pairs back to the compiler.
|
||||||
|
|
||||||
In this new implementation, the contents of the environment of the
|
Shell variable expansion uses the value from the params file if the
|
||||||
program that launches /usr/share/shorewall/compiler.pl overrides
|
parameter was set in that file. Otherwise the current environment
|
||||||
the contents of /etc/shorewall/params.
|
is used. If the variable does not appear in either place, an error
|
||||||
|
message is generated.
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
I V. R E L E A S E 4 . 4 H I G H L I G H T S
|
I V. R E L E A S E 4 . 4 H I G H L I G H T S
|
||||||
|
Loading…
Reference in New Issue
Block a user