#!/tools/perl_5.004_01/bin/perl

# Date: 9/14/96

$basename = substr($0,rindex($0,"/")+1); 

sub usage
{
die <<"EndUsage";

usage: $basename [-help] [-lock] [-sub] filename_list

Display Options:
-help  - just display this message and quit.

Input Options:
-lock	Upper case (caps lock)
-sub	Move recursively through sub-directories

The filename_list can consist of one file or multiple files.
To make this point clear here are some examples:

	To translate one file:
        % $basename file_name	
	To translate multiple files:
	% $basename file1 file2 file3
	To translate files contained in directories:
	% $basename directory1/* directory2/*

Author: Paulo Dutra (paulo\@xilinx.com)

EndUsage
}

sub change
{
my($name) = shift;
my($slash) = rindex($name,"/");
my($head) = substr($name,0,$slash + 1); 
my($basename) = substr($name,$slash + 1); 
my($new_file);
my(@files); 

$basename =~ y/A-Z/a-z/ if !$opt_lock;
$basename =~ y/a-z/A-Z/ if $opt_lock;

$new_file = ($slash == -1)?"$basename":"${head}$basename";
rename($name,$new_file) || warn "Translation failed for ${name}: $!\n";
print "Translated:\n$name -> $basename \n" unless ($?);

(@files = glob "$new_file/*") if (-d $new_file && $opt_sub);
@files
}

require "newgetopt.pl";
&NGetOpt("help","lock","sub");
if ($@ || $opt_help) { &usage }

$#ARGV >= 0 || &usage;

#heart of program -- translate
RECURSIVE:
	{
	foreach (@ARGV)
  		{
  		@files =(@files,&change($_))
  		}
	if(@files)
		{
		@ARGV=@files;
		@files=();
		redo RECURSIVE
		}
	}

exit
