diff options
Diffstat (limited to 'perl-install/handle_configs.pm')
-rw-r--r-- | perl-install/handle_configs.pm | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/perl-install/handle_configs.pm b/perl-install/handle_configs.pm deleted file mode 100644 index 7d6e5c6e9..000000000 --- a/perl-install/handle_configs.pm +++ /dev/null @@ -1,160 +0,0 @@ -package handle_configs; - -# $Id$ - -use diagnostics; -use strict; - -use common; - -sub searchstr { - # Preceed all characters which are special characters in regexps with - # a backslash, so that the returned string used in a regexp searches - # a literal occurence of the original string. White space is replaced - # by "\s+" - # "quotemeta()" does not serve for this, as it also quotes some regular - # characters, as the space - my ($s) = @_; - $s =~ s!([\\/\(\)\[\]\{\}\|\.\$\@\%\*\?#\+\-])!\\$1!g; - return $s; -} - -sub read_directives { - # Read one or more occurences of a directive - my ($lines_ptr, $directive) = @_; - - my $searchdirective = searchstr($directive); - # do not use if_() below because it slow down printerdrake - # to the point one can believe in process freeze: - map { (/^\s*$searchdirective\s+(\S.*)$/ ? chomp_($1) : ()) } @$lines_ptr; -} - -sub read_unique_directive { - - # Read a directive, if the directive appears more than once, use - # the last occurence and remove all the others, if it does not - # occur, return the default value - - my ($lines_ptr, $directive, $default) = @_; - - if ((my @d = read_directives($lines_ptr, $directive)) > 0) { - my $value = $d[-1]; - set_directive($lines_ptr, "$directive $value"); - return $value; - } else { - return $default; - } -} - -sub insert_directive { - - # Insert a directive only if it is not already there - - my ($lines_ptr, $directive) = @_; - - my $searchdirective = searchstr($directive); - (/^\s*$searchdirective$/ and return 0) foreach @$lines_ptr; - push @$lines_ptr, "$directive\n"; - return 1; -} - -sub remove_directive { - - # Remove a directive - - my ($lines_ptr, $directive) = @_; - - my $success = 0; - my $searchdirective = searchstr($directive); - (/^\s*$searchdirective/ and $_ = "" and $success = 1) - foreach @$lines_ptr; - return $success; -} - -sub comment_directive { - - # Comment out a directive - - my ($lines_ptr, $directive, $exactmatch) = @_; - - my $success = 0; - my $searchdirective = searchstr($directive); - $searchdirective .= ".*" if !$exactmatch; - (s/^\s*($searchdirective)$/#$1/ and $success = 1) - foreach @$lines_ptr; - return $success; -} - -sub replace_directive { - - # Replace a directive, if it appears more than once, remove - # the additional occurences. - - my ($lines_ptr, $olddirective, $newdirective) = @_; - - my $success = 0; - $newdirective = "$newdirective\n"; - my $searcholddirective = searchstr($olddirective); - (/^\s*$searcholddirective/ and $_ = $newdirective and - $success = 1 and $newdirective = "") foreach @$lines_ptr; - return $success; -} - - -sub move_directive_to_version_commented_out { - - # If there is a version of the directive "commentedout" which is - # commented out, the directive "directive" will be moved in its place. - - my ($lines_ptr, $commentedout, $directive, $exactmatch) = @_; - - my $success = 0; - my $searchcommentedout = searchstr($commentedout); - $searchcommentedout .= ".*" if !$exactmatch; - (/^\s*#$searchcommentedout$/ and - $success = 1 and last) foreach @$lines_ptr; - if ($success) { - remove_directive($lines_ptr, $directive); - (s/^\s*#($searchcommentedout)$/$directive/ and - $success = 1 and last) foreach @$lines_ptr; - } - return $success; -} - -sub set_directive { - - # Set a directive, replace the old definition or a commented definition - - my ($lines_ptr, $directive, $full_line) = @_; - - my $olddirective = $directive; - if (!$full_line) { - $olddirective =~ s/^\s*(\S+)\s+.*$/$1/s; - $olddirective ||= $directive; - } - - my $success = (replace_directive($lines_ptr, $olddirective, - $directive) || - insert_directive($lines_ptr, $directive)); - if ($success) { - move_directive_to_version_commented_out($lines_ptr, $directive, - $directive, 1); - } - return $success; -} - -sub add_directive { - - # Add a directive, replace a commented definition - - my ($lines_ptr, $directive) = @_; - - my $success = insert_directive($lines_ptr, $directive); - if ($success) { - move_directive_to_version_commented_out($lines_ptr, $directive, - $directive, 1); - } - return $success; -} - -1; |