#!/usr/bin/perl -w
# remd: dod.pl est un script qui fait des actions dans un repértoire
# il lit le nom du rep en argument.
# usage: dor.pl /nom/du/rep
# V:1.0    vendredi 18 Mai 2009 Pessac
# - Alain Adelmar alias asynchrone - Ca marche grave
# $ID:

# use strict;
# use File::Copy;
# use warnings;
# utilisation de la date/heure pour maitenant et pour file X

use DateFrench;
our $format_affichage = 2;
our $opt_date_file = 2;
our $fr_date_now = maintenant("$format_affichage");
print "$fr_date_now\n";

use Cwd;
my $dir= cwd;

my $lx = "x" x 20;
my $argv = my $o = my $fout = my $resp = my $reg = "";
my $moi = "alain Adelmar";
my $recap_lbl= "$0 écris par $moi \nle 21 Avril 2008\nexecuter $fr_date_now\n";
my $rootfile ="dor.log";

#----------------- sortie formatée pour l'affichage fichiers/sorti ---------
format STDOUT_TOP =
Page @<<
$%

 n   taille      fichier
===  =======   ======================================================================
.





# traitement argument - fichier a traiter et verif validité

if (@ARGV) {
  if ($ARGV[1] ne "") {
    $fout = $ARGV[1];
    $argv = "o";
    $rep = $ARGV[0];
    }
  else {
    $rep = $ARGV[0];
  }
}
else {
  print "$lx\nusage: dor.pl [rep_a_traiter] [fichier_de_sortie] \n( $0 made by $moi)\n";
  #---------demander quel fichier traiter et verifier si il existe
  print "$lx\n";
  print "Indiquez le repertoire a traiter:\n";
  chomp($rep =<STDIN>);
  
}


# création d'un fichier de sortie--------------
if ($argv =~ /o/) {
  unless ($fout =~ /\/|\\/) {
    ($fout= "$dir/$fout");
    (&logout) if (-f $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 = "sortie_" . "$rootfile";
  &logout;
}

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

#-------------------------ici on traite le rep ---  


if (-d $rep) {
  opendir REP, "$rep" or die "Ouverture de $rep impossible $!";
  @files = (sort readdir REP);
  closedir REP || die "Fermeture de $rep impossible $!";

  foreach $file(@files) {
    next unless ($file =~ /\.{1}s?h?x?t?m{1}l?$/i);

#     $fs = "$spath\/$file";
    $fs = "$rep\/$file";
    @tmpstat = stat($fs);
    $taillef= $tmpstat[7];
    # print "$taillef\n";
    
    printf FOUT "%7d  %-40s\n", $taillef, $fs;
    write;
    $i++;
    # push @nwcontenu, $reg;
  }
}

#--------------------------------------------------------------


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




sub logout {
  my $fout= @_;

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


format STDOUT =
@<<< @<<<<<<<   @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$i, $taillef, $fs
.

END;
