diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-10-14 20:19:30 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-10-14 20:19:30 +0000 |
commit | 11cfb6f7f6326e79b4a930716c340b65d76d0683 (patch) | |
tree | 407c08b76ce570ebc0c5b218aa914a1449808f20 /tools/update/word-replace.in | |
parent | Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>: (diff) | |
download | rtems-11cfb6f7f6326e79b4a930716c340b65d76d0683.tar.bz2 |
Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
1. Rtems contains some perl scripts that use hard-coded paths to
/usr/bin/perl or /usr/local/bin/perl I have already fixed these
problems by adding some checks to configure.in. While doing this,
I also cleaned up some more autoconf related problems for generating
shell scripts. This patch might seem a bit scary to you, but I am
quite confident it won't break something (I've been testing it for
almost a week now, however it might introduce typos for a limited
number configurations I don't have access to - But it shouldn't be
a problem for you to test them :-).
I expect to get this finished tonight, hence you will very likely
have the patch when you get up tomorrow.
Changes:
* Check for PERL and disable all PERL scripts if perl wasn't found.
* Generate all KSHELL-scripts with autoconf instead of make-script
* Automatic dependency handling for autoconf generated KSHELL or PERL
scripts (make/rtems.cfg)
Notes:
* this patch contains new files and deletes some other files.
* The patch is relative to rtems-4.0.0-beta4 with my previous
rtems-rc-981014-1.diff patch applied.
Testing:
I tested it with sh-rtems and posix under linux. Now all targets
which are touched by this patch and which are not used while building
for sh-rtems and posix still need to be tested. AFAIS, only the
sparc/erc32 BSP should be affected by this criterion. And if you
like to, you should also consider testing it on a Cygwin32 and a
Solaris host for one arbitrary BSP.
Diffstat (limited to 'tools/update/word-replace.in')
-rw-r--r-- | tools/update/word-replace.in | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tools/update/word-replace.in b/tools/update/word-replace.in new file mode 100644 index 0000000000..24c7c3a546 --- /dev/null +++ b/tools/update/word-replace.in @@ -0,0 +1,89 @@ +#!@PERL@ +# +# $Id$ +# + +eval "exec @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 +foreach $file (@ARGV) +{ + print "$file\t"; + + open (INFILE, "<$file") || + die "could not open input file $file: $!"; + + $outfile = $file . ".fixed";; + open (OUTFILE, ">$outfile") || + die "could not open output file $outfile: $!"; + + while (<INFILE>) + { + study; # maybe make s/// faster + foreach $key (keys %patterns) + { + if ( s/\b$key\b/$patterns{$key}/ge ) + { + print "."; + } + } + print OUTFILE $_; + } + print "\n"; + close INFILE; + close OUTFILE; +} + |