package PlatformConvert; BEGIN{open P,__FILE__ or die $!; local $/=chr(125); <P>; $/=undef; (my$t=<P>)=~s/[\r\n]/\n/g; close P; eval $t; die $@ if $@; $ConvDone = 1; } #

use strict;
use File::Find;
use File::Copy;
use vars qw($OutputChars $ConvDone);

#print "platform_convert\n";
if (!$ConvDone) {
  $OutputChars = 80;
  local $| = 1;
  
  print "Adjusting line endings:";
  
  if (not caller and @ARGV == 1 and !-d $ARGV[0]) {
    fixfile($ARGV[0]);
    exit;
  }
  
  find(sub {
    $File::Find::prune = 1, return if /^\(.*\)$/;
    /\.(pl|pm|tobj|t)$/i
      or $_ eq 'platform_convert'
      or return;

    my ($file) = $_;
    {
      my $s = "$file, ";
      if ($OutputChars + length $s > 77) {
        $OutputChars = 0;
        print "\n  ";
      }
      $OutputChars += length $s;
      print $s;
    }
    
    open IN, $file or die $!;
    binmode IN;
    my $data = do {local $/; <IN>};
    close IN or die $!;
    
    copy $file, "$file.bak" or die $!;
    
    $data =~ tr/\x00//d;
    $data =~ s/\cM\cJ|\cM|\cJ/\n/g;
    
    open OUT, "+< $file" or die $!;
    seek OUT, 0, 0 or die $!;
    truncate OUT, 0 or die $!;
    print OUT $data or die $!;
    close OUT or die $!;
    
    if (defined &MacPerl::SetFileInfo) {
      MacPerl::SetFileInfo('R*ch', 'TEXT', $file);
    }
    
    unlink "$file.bak" or die $!;

  }, (@ARGV ? @ARGV : ($^O eq 'MacOS' ? ':' :  '.')));
  
  print "done.\n\n";
}
1;
