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

#Written by:  Paul Dutra (paulo@xilinx.com)
#Created:  03/08/00
#Updated:  03/09/00

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

sub usage
{
die <<"EndUsage";

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

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

Input Options:
-unix2dos	UNIX to DOS file format
		Default: DOS to UNIX format when option is
		not specified
-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;

(return (glob "$name/*")) if (-d $name && $opt_sub);
return () if (-d $name || -B $name);

@ARGV = ($name);

while(<>)
  {
  s#\r\n#\n#o if !$opt_unix2dos;
  s#\n#\r\n#o if $opt_unix2dos;

  print;  #this prints the edited version of original filename
  }               #end of while loop

print STDOUT "Finished $name\n";

return ();
}

require "newgetopt.pl";
&NGetOpt("h","unix2dos","sub");

if ($@ || $opt_h) { &usage }
$#ARGV >= 0 || &usage;

# Envoke in-place editing
$^I = "";

my @files = @ARGV;
@ARGV = ();

RECURSIVE:
  {
  foreach $file (@files)
    {
    @list = (@list, &change($file));
    }
  if ($#list >= 0)
    {
    @files = @list;
    @list = ();
    redo RECURSIVE;
    }
  }

exit
