URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [rtems/] [tools/] [update/] [word-replace.in] - Rev 173
Compare with Previous | Blame | View Log
#!@PERL@## $Id: word-replace.in,v 1.2 2001-09-27 12:02:54 chris Exp $#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-replaceReplace *words* with patterns. Pattern file specifies which patternsto replace on each line. All patterns are wrapped with perl \\b regexpspecifiers.Usage: $0 [-v] -p pattern-file files to replace-v -- possibly more verbose-p file -- pattern file-h -- helpanything else == this help messagePattern 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 coolNO_MORE_HELPexit 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 patternsopen(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 patternsdie "pattern appears 2x: '$orig' in '$pattern_file'--" if defined($patterns{$orig});$patterns{$orig} = $new;}close PATTERNS;# walk thru each line in each fileforeach $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/// fasterforeach $key (keys %patterns){if ( s/\b$key\b/$patterns{$key}/ge ){print ".";}}print OUTFILE $_;}print "\n";close INFILE;close OUTFILE;}
