File indexing completed on 2024-04-06 12:23:58
0001
0002
0003
0004
0005
0006
0007
0008 use strict;
0009
0010 die "Usage: $0 <file> <replaces>\n" if ( @ARGV != 2 );
0011
0012 my $cfgFile = $ARGV[0];
0013 my $replaceFile = $ARGV[1];
0014
0015 my %replaces;
0016
0017
0018 open(IN,$replaceFile) or die "Couldn't open $replaceFile: $!";
0019 while( <IN> ) {
0020 if ( /replace\s+(\S+)(\s*=.*)[
0021 my $key = $1;
0022 my $value = $2;
0023
0024 while ( &countBraces($value) > 0 ) {
0025 my $line = <IN>;
0026 $value .= $line;
0027 }
0028 $replaces{$key} = $value;
0029 }
0030 }
0031 close(IN);
0032
0033
0034 my $temp = $cfgFile.".tmp";
0035 open(TEMP,">$temp") or die "Couldn't open $temp: $!";
0036
0037
0038 open(CFG,$cfgFile) or die "Couldn't open $cfgFile: $!";
0039 while ( <CFG> ) {
0040 chomp();
0041 my $line = $_;
0042 my $matched = 0;
0043 foreach my $replace ( keys %replaces ) {
0044 next if ( !$replaces{$replace} );
0045 if ( $line =~ /$replace/ ) {
0046 print TEMP "replace ".$replace.$replaces{$replace}."\n";
0047 $replaces{$replace} = 0;
0048 ++$matched;
0049 last;
0050 }
0051 }
0052 if ( !$matched ) {
0053 print TEMP $line."\n";
0054 }
0055 }
0056 close(CFG);
0057
0058
0059
0060
0061 print TEMP <<HEADER
0062
0063
0064
0065 HEADER
0066 ;
0067 foreach my $replace ( keys %replaces ) {
0068 next if ( !$replaces{$replace} );
0069 print TEMP "replace ".$replace.$replaces{$replace}."\n";
0070 }
0071 close(TEMP) or die "Couldn't close $temp: $!";
0072 rename($temp,$cfgFile);
0073
0074
0075
0076
0077
0078 sub countBraces {
0079
0080 my $string = shift;
0081 my $nBraces = 0;
0082 my $char = "";
0083
0084 while ( length($string)>0 ) {
0085 $char = chop($string);
0086 ++$nBraces if ( $char =~ /\{/ );
0087 --$nBraces if ( $char =~ /\}/ );
0088 }
0089
0090 return $nBraces;
0091
0092 }