l4ka-pistachio/tools/renamestuff

95 lines
2.9 KiB
Perl
Executable File

#!/usr/bin/perl
######################################################################
##
## Copyright (C) 1998, Espen Skoglund
##
## Filename: fixupcode.pl
## Description: Change all occurences of a variable/type name in all
## the files given on command line
## Status: Experimental, do not distribute.
## Author: Espen Skoglund <espensk@stud.cs.uit.no>
## Created at: Fri Aug 28 09:08:38 1998
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## 2. Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
##
## THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
## ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
## SUCH DAMAGE.
##
## $Id: renamestuff,v 1.1 2003/11/21 17:50:53 skoglund Exp $
##
######################################################################
## Parse command line
while ( $arg = shift ) {
if ( !$fromname ) {
$fromname = $arg;
} elsif ( !$toname ) {
$toname = $arg;
} else {
push( @files, $arg );
}
}
if ( !$fromname || !$toname ) {
usage();
exit;
}
## Slurp whole files.
undef $/;
## Change occurances in all the files.
foreach $f ( @files ) {
## Read file contents.
open( OLDFILE, "$f" ) || die "open($f): $!\n";
my $contents = <OLDFILE>;
close OLDFILE;
## Check for replacements.
my $num = ($contents =~ s/\b$fromname\b/$toname/ogs);
next unless $num;
printf( "Replaced %2d occurence%s in $f\n",
$num, $num > 1 ? "s" : " " );
## Make backup of file.
rename( $f, "$f.bak" ) || die "rename($f, $f.bak): $!\n";
## Try to open file for writing.
if ( !open( NEWFILE, "> $f" ) ) {
rename( "$f.bak", $f );
die "open(> $f): $!\n";
}
## Copy contents into new file.
print NEWFILE $contents;
close NEWFILE;
unlink "$f.bak";
}
################################################################
sub usage {
$0 =~ s!^.*/([^/]+)$!\1!;
print( "USAGE: $0 <from name> <to name> [file ...]\n" );
}