Files
rtems/doc/tools/word-replace2
Joel Sherrill a4ad948732 Patch rtemsdoc-4.5.0-rc-3.diff from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
It addresses:
  * .cvsignore (only minor changes to yours, as they were pretty clean,
    most changes result from my mkcvsignore script being overly pedantic
    sorting entries alphabetically.)
  * timing.t handling and time<BSP>_.texi handling in supplements
  * network.t handling in bsp_howto
  * RTEMS_DATE and RTEMS_UPDATE handling in  configure.in. [It actually is
    a hack, as we could apply automake's version.texi handling instead - I
    know think to understand what automake does with it.]
  * avoid using temporary files; Therefore a new tool called bmenu2,
    derived from bemenu, is introduced, which reads a single file from stdin
    and writes to stdio.

  To apply:

    cd rtemsdoc
    patch -p1 < rtemsdoc-4.5.0-rc-3.diff
    cvs rm -f bsp_howto/network.t
    cvs add tools/bmenu/bmenu2.c
    ./bootstrap

  BTW: word-replace now is unused. It could be removed if you like to.
2000-05-01 16:53:13 +00:00

102 lines
2.1 KiB
Perl

#!/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 ;
}
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;