# package FrDate4File;

=head1 NOM

  frenchdate - donne l heure et la date en francais

=head1 SYNTHAXE
  
  use FrDate4File;
  $frd = ffdt($file, $opd, $modep);   # done la date suivant
  ($opd:dernier access, modif,chang) du fichier en francais
  au format suivant ($modep: Mercredi 11/12/2003 18:45 ou
  20031211 ou 20031211184503).


=head1 DESCRIPTION

  La variable scalaire retourné par le module sera une date
  en français formater selon votre besoin pour:

    B<la date du fichier> avec
    $frd = ffdt($file, $opd, $mod_affichage) ou
      B<$file> est le nom du fichier
      B<$opd> est un chiffre de 0 a 2 representant:
          0 date de dernier acces
          1 date de derniére modification
          2 date du dernier changement d'inode
      B<$mod_affichage> est un chiffre de 0 a 2 representant:
        pour 0 la date comme: Mercredi 11/12/2003 18:45     (par defaut)
        pour 1 la date comme: Mercredi 11 Decembre 2003  (pour la Secla)
        pour 2 la date comme: 20031211184503    (pour liste et filename)
 
 expl: si je veux la date du dernier acces en format liste je demanderai:
 $file = $foo;
 $opd = 0;
 $mod_affichage =2;
 $frd = ffdt($file, $opd, $modep);

=head1 AUTEUR

  Ce script à été écrit par Alain Adelmar aadelmar@free.fr
  publié sur http://aadelmar.free.fr/FrDate4File.html
  adresse : 6 rue de Tunis 33600 Pessac France

=cut


$st = 0;
&ffdt($file, $opd, $mod_affichage);

sub ffdt($file, $opd, $mod_affichage) {
  my($file)=@_;
  my($opd)=@_;
  my($mod_affichage)=@_;
  
  local @lsjour = qw(
		     Dimanche
		     Lundi
		     Mardi
		     Mercredi
		     Jeudi
		     Vendredi
		     Samedi
		    );
  
  for $i(0 ..6) {
    $fj{$i} = $lsjour[$i];
  }
  
  local @lsmois = qw(
		     Janvier
		     Février
		     Mars
		     Avril
		     Mai
		     Juin
		     Juillet
		     Aout
		     Septembre
		     Octobre
		     Novembre
		     Décembre
		    );
  for $i(0..11) {
    $fm{$i} = $lsmois[$i];
  }
  
  #------pour afficher la date de fichier comme: 01/05/2003 20:05:30
  
  @st = stat($file);
  $atfs = $st[8];
  $mtfs = $st[9];
  $ctfs = $st[10];
  
  #-----------------choix des options 
  if ($opd == 1) {
    @ls_mtfs = localtime($mtfs);
    $lbl = "Modif";
    &convert_time(@ls_mtfs, $lbl);
  }
  elsif ($opd == 2) {
    @ls_ctfs = localtime($ctfs);
    $lbl = "Change";
    &convert_time(@ls_ctfs, $lbl);
  }
  elsif ($opd == 3) {
    $all = 1;
    @ls_atfs = localtime($atfs);
    $lbl = "Acces";
    &convert_time(@ls_atfs, $lbl);
    $frt = "$lbl " . $frd . " _";  
    @ls_mtfs = localtime($mtfs);
    $lbl = "Modif";
    &convert_time(@ls_mtfs, $lbl);
    $frt += "$lbl " . $frd . " _";  
    @ls_ctfs = localtime($ctfs);
    $lbl = "Change";
    &convert_time(@ls_ctfs, $lbl);
    $frt += "$lbl " . $frd;
  }
  else {
    @ls_atfs = localtime($atfs);
    $lbl = "Acces";
    &convert_time(@ls_atfs, $lbl);
  }
}
 


sub convert_time(@ls) {
  my(@ls)=@_;
  
  for (@ls) {
    $sjour = "$fj{$ls[6]}";
    $smois = "$fm{$ls[4]}";
    if ($ls[5] <= 100) {
      $aa = "19" . "$ls[5]";
    }
    else {
      $aa = "200" . ("$ls[5]"-100);
    }
    
    # mois idem localtime(x)[4] + 1 (because janvier = 0)
    if ($ls[4] <= 8) {
      $mm = "0" . ("$ls[4]" + 1);
    }
    else {
      $mm = ("$ls[4]" + 1);
    }
    # jour idem localtime(x)[3] + 1 (because le 1 démarre à 0)
    if ($ls[3] <= 8) {
      $jj = "0" . "$ls[3]";
    }
    else {
      $jj = $ls[3];
    }
    # les heures
    if ($ls[2] <= 9) {
      $hh = "0" . "$ls[2]";
    }
    else {
      $hh = $ls[2];
    }
     # les minutes
    if ($ls[1] <= 9) {
      $mn = "0" . "$ls[1]";
    }
    else {
      $mn = $ls[1];
    }
     # les secondes
    if ($ls[0] <= 9) {
      $ss = "0" . "$ls[0]";
    }
    else {
      $ss = $ls[0];
    }
  }
  
  if ($mod_affichage == 1) {
    $frd = "$sjour $jj $smois $aa";
    return $frd;
  }
  elsif ($mod_affichage == 2) {
    $frd = "$aa" . "$mm" . "$jj" . "$hh" . "$mn" . " $ss";
    return $frd;
  }
  else {
    $frd = "$lbl $sjour $jj\/$mm\/$aa $hh:$mn:$ss";
    return $frd;
  }
}

END;
