summaryrefslogtreecommitdiffstats
path: root/doc/tools/word-replace2
diff options
context:
space:
mode:
Diffstat (limited to 'doc/tools/word-replace2')
-rw-r--r--doc/tools/word-replace2101
1 files changed, 101 insertions, 0 deletions
diff --git a/doc/tools/word-replace2 b/doc/tools/word-replace2
new file mode 100644
index 0000000000..a56d88a688
--- /dev/null
+++ b/doc/tools/word-replace2
@@ -0,0 +1,101 @@
+#!/usr/bin/perl
+#
+# $Id$
+#
+
+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-replace
+
+ 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 ;
+}
+
+print STDERR "$outfile\t";
+
+open (INFILE, "<$infile") ||
+ die "could not open input file $infile: $!";
+
+open (OUTFILE, ">$outfile") ||
+ die "could not open output file $outfile: $!";
+
+$line = join('',<INFILE>) ;
+
+ foreach $key (keys %patterns)
+ {
+ if ( $line =~ s/\b$key\b/$patterns{$key}/ge )
+ {
+ print STDERR "." ;
+ }
+ }
+
+print OUTFILE $line ;
+
+print STDERR "\n";
+close INFILE;
+close OUTFILE;