#!/usr/bin/perl -w
# remd: ce script va oter les retour chariot de fins de ligne que windows
# met un peut partout. Il accepte un argument le nom de fichier.
# usage: morrowind -blo /home/bin/dico_uk-fr
# écris par Alain Adelmar 17/Avril/2009 à Pessac 33600
#-------------------------------------------------------------------------

use Cwd;
my $dir= cwd;

my $lx = "x" x 20;
my $argv = my $f = my $fout = my $resp = "";
my $moi = "alain Adelmar";
# traitement argument - fichier a traiter et verif validité

if (@ARGV) {
  if ($ARGV[0] =~ /^-/) {
    $ARGV[0] =~ s/-()/($1)/;
    ($argv = $ARGV[0]);   # assigne $argv  
#    ($argv = "b") if ($ARGV[0]=~ /^b/);   # pour b pour binaire
#    ($argv = "u") if ($ARGV[0]=~ /^u/);   # pour u
#    ($argv = "l") if ($ARGV[0]=~ /^l/);   # pour latin1 => utf8
#    ($argv = "o") if ($ARGV[0]=~ /^o/);   # pour output (c.a.d: fichier differant)
    if($argv=~ /o/) {
        if ($ARGV[2] ne "") {
            $fout = $ARGV[2];
	    $f = $ARGV[1];
	    print "f vaut $f (source)\nfout vaut $fout (cible)\net est considerer comme argv2\n";
        }
        else {
            print "si vous prennez l option -o il faut indiquer le fichier cible\npar defaut sorti_" .  $ARGV[1] . "\n";
            print "usage: $0 [-blo] [nom_de_la_source] ([nom_de_la_cible] pour option -o)\n";
            chomp($fout = <STDIN>);   
        }
    }
    if ($ARGV[1] ne "") {
      $f = $ARGV[1];
      &veriff;
    }
  }
  else {
    $f = $ARGV[0];
    &veriff;
  }
}
else {
  print "$lx\nusage: morrowin.pl [-cou] [fichier_a_traiter] \n(made by $moi)\n";
  #---------demander quel fichier traiter et verifier si il existe
  print "$lx\n";
  print "Indiquez le fichier a traiter:\n";
  chomp($f =<STDIN>);
  &veriff;
}


# création d'un fichier de sortie--------------
if ($argv =~ /o/) {
    ($fout= "$dir//$fout") if(!($fout =~ /\/|\\/));
    print "désirez vous avoir $fout comme fichier cible?";
    my $resp = <STDIN>;
    if($resp=~ /^n/i) {
        print "veuillez recommencer tout en indiquant le nom_du_fichier_cible ou path_et_le_nom_du_fichier_cible\n";
    }
}
else {
 $fout = "sorti_" . "$rootfile";
}
&logout;

# ouverture du fichier en lecture seule
open F, "$f" or die "ouverture de $f impossible $!";
if ($argv =~ /b/) {
    binmode F;
}
@contenu = <F>;
close F || die "Fermeture de $f impossible $!";

use Morrowind;
@nwcontenu = mortawind(@contenu);

open FOUT, ">$fout" or die "Ouverture de $fout impossible $!";

print FOUT @nwcontenu;
close FOUT || die "Fermeture de $fout impossible $!";

if ($argv=~ /l/) {
    print "ca passe a luteifage\n";
    system("iconv -f latin1 -t utf8 $fout");
}


sub veriff {
  if ($f !~ /\/|\\/) {
    $rootfile = $f;
    $f = "$dir\/$f";
  }
  else {
    $rootfile = $f;
    @pathf = split("\/", $rootfile);
    $rootfile = pop @pathf;
  }
  while (!(-f $f)) {
    print "Veuillez entrer un nom de fichier, et son path si ailleur que dans le $dir:\n";
    chomp ($f = <STDIN>);
  }
}

sub logout {
  my $fout= @_;

  $u= 0;
  while (-f $fout) {
    $u++;
    $fout = "$dir\/sorti_" . $u . "_$rootfile";
  }
}
