Fix params parsing on older distros

This commit is contained in:
Tom Eastep 2010-12-03 13:40:11 -08:00
parent 5458d9367f
commit 2e35ad0a1b
2 changed files with 43 additions and 14 deletions

View File

@ -2888,16 +2888,6 @@ sub unsupported_yes_no_warning( $ ) {
#
# Process the params file
#
sub get_params_bug( \@$ ) {
my ( $params, $element ) = @_;
warning_message "Bug in get_params()";
print STDERR "Params\n";
print STDERR $_ for @$params;
print STDERR "\nElement in error:\n";
print STDERR "$element\n";
}
sub get_params() {
my $fn = find_file 'params';
@ -2912,6 +2902,11 @@ sub get_params() {
fatal_error "Processing of $fn failed" if $?;
if ( $debug ) {
print "Params:\n";
print $_ for @params;
}
my ( $variable , $bug );
if ( $params[0] =~ /^declare/ ) {
@ -2932,10 +2927,34 @@ sub get_params() {
$params{$1} = '';
} else {
if ($variable) {
s/'$//;
s/"$//;
$params{$variable} .= $_;
} else {
get_params_bug( @params, $_ ) unless $bug++;
warning_message "Param line ($_) ignored" unless $bug++;
}
}
}
} elsif ( $params[0] =~ /^export (.*?)="/ ) {
#
# getparams interpreted by older (e.g., RHEL 5) Bash
#
# - Variable names preceded by 'export '
# - Variable values are delimited by double quotes
# - Embedded single quotes are escaped with '\'
#
for ( @params ) {
if ( /^export (.*?)="(.*[^\\])"$/ ) {
$params{$1} = $2 unless $1 eq '_';
} elsif ( /^export (.*?)="(.*)$/ ) {
$params{$variable=$1}="${2}\n";
} elsif ( /^export (.*)\s+$/ || /^export (.*)=""$/ ) {
$params{$1} = '';
} else {
if ($variable) {
s/"$//;
$params{$variable} .= $_;
} else {
warning_message "Param line ($_) ignored" unless $bug++;
}
}
}
@ -2959,7 +2978,7 @@ sub get_params() {
s/'$//;
$params{$variable} .= $_;
} else {
get_params_bug( @params , $_ ) unless $bug++;
warning_message "Param line ($_) ignored" unless $bug++;
}
}
}

View File

@ -43,6 +43,16 @@ VI. PROBLEMS CORRECTED AND NEW FEATURES IN PRIOR RELEASES
1) A bug catcher has been installed in the params file processing
logic to help determine why parameter processing is failing.
If you see this:
BUG: get_params()
then please copy/paste the displayed information and send it to the
user's or developer's mailing list.
Note: Your firewall should still start/restart okay when the above
message appears.
----------------------------------------------------------------------------
I V. R E L E A S E 4 . 4 H I G H L I G H T S
----------------------------------------------------------------------------