Files
rtems/doc/tools/word-replace2
Joel Sherrill 65c6425de9 Remove CVS Id Strings (manual edits after script)
These modifications were required by hand after running the script.
In some cases, the file names did not match patterns. In others,
the format of the file did not match any common patterns.
2012-05-11 08:44:14 -05:00

99 lines
2.1 KiB
Perl

#!/usr/bin/perl
eval "exec /usr/local/bin/perl -S $0 $*"
if $running_under_some_shell;
require 'getopts.pl';
&Getopts("p:vh"); # help, pattern file, verbose,
if ($opt_h || ! $opt_p) {
print STDERR <<NO_MORE_HELP;
word-replace2
Replace *words* with patterns. Pattern file specifies which patterns
to replace on each line. All patterns are wrapped with perl \\b regexp
specifiers.
Usage: $0 [-v] -p pattern-file files to replace
-v -- possibly more verbose
-p file -- pattern file
-h -- help
anything else == this help message
Pattern file looks like this:
# Example:
# ignores all lines with beginning with # or not exactly 2 fields
_Dorky_Name rtems_dorky_name # comments, and blank lines are cool
_Dorky_Name2 rtems_dorky_name2 # comments, and blank lines are cool
NO_MORE_HELP
exit 0;
}
$verbose = $opt_v;
$pattern_file = $opt_p;
# make standard outputs unbuffered (so the '.'s come out ok)
$oldfh = select(STDERR); $| = 1; select($oldfh);
$oldfh = select(STDOUT); $| = 1; select($oldfh);
# pull in the patterns
open(PATTERNS, "<$pattern_file") ||
die "could not open $pattern_file: $!, crapped out at";
foreach (<PATTERNS>)
{
chop;
s/#.*//;
next if /^$/;
($orig, $new, $junk, @rest) = split;
next if ( ! $orig || ! $new || $junk); # <2 or >2 patterns
die "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig});
$patterns{$orig} = $new;
}
close PATTERNS;
# walk thru each line in each file
$infile = '-' ;
$outfile = '-' ;
if ( $#ARGV > -1 )
{
$infile = "@ARGV[0]" ;
shift @ARGV ;
}
if ( $#ARGV > -1 )
{
$outfile = "@ARGV[0]" ;
shift @ARGV ;
}
open (INFILE, "<$infile") ||
die "could not open input file $infile: $!";
$line = join('',<INFILE>) ;
close INFILE;
print STDERR "$outfile\t";
open (OUTFILE, ">$outfile") ||
die "could not open output file $outfile: $!";
foreach $key (keys %patterns)
{
if ( $line =~ s/\b$key\b/$patterns{$key}/ge )
{
print STDERR "." ;
}
}
print OUTFILE $line ;
print STDERR "\n";
close OUTFILE;