#################################
#
# Cette fonction va transferer les differents fichiers attaches au fichier
# html et sgml qu'on peut rencontrer dans l'arborescence donnee
#
#################################

sub transfert_autre
{local ($Information,$D_F) = @_;

 local ($D_File) = $D_F;
 $D_File =~ s/(.*)\/.*/$1/is;

# print "$Information\n";
 local ($i_autre) = 0;
 local ($buffer) = $Information;
 while($TAGS[$i_autre] ne '')
  {
#   print "autre==>$TAGS[$i_autre]\n";
   while($buffer =~ /($TAGS[$i_autre]\s*=\s*"(.*?)")/is)
    {
	 local($Le_tout) = $1;
	 local($Le_fichier) = $2; 
	 if($Le_fichier =~ /$SAPI_LT.*?$SAPI_GT(.*?)$SAPI_LT\/.*?$SAPI_GT/)
	  {
	   while($Le_fichier =~ /$SAPI_LT.*?$SAPI_GT(.*?)$SAPI_LT\/.*?$SAPI_GT/)
	    {
		 &copie_des_fichiers($1,$D_File);
		 $Le_fichier =~ s/$SAPI_LT.*?$SAPI_GT(.*?)$SAPI_LT\/.*?$SAPI_GT//;
		}
	  }
	 else
	  {
	   &copie_des_fichiers($Le_fichier,$D_File);
      }
# \Q \E traduisent tout les caracteres speciaux ( ex : ? \\\?)
     $buffer =~ s/\Q$Le_tout\E//is;
    }

   $i_autre++;
  }
}

sub copie_des_fichiers
{local ($File,$D_File) = @_;
 local ($S_File) = $D_File;
 $S_File =~ s/$Dest/$Source/is;
 
 if($File =~ /.*(\.html|\.sgml|\.\+|\.\*)$/is || $File =~ /(telnet|file|http|ftp|mailto|wais|news|gopher|about):.*/is)
  {return}
 if($File =~ /.*\/bin\/ls$/)
  {return}
 if($File =~ /.*\/lib\/(rld|libc\.so\.1)$/)
  {return}
 if(!($File =~ /^\/.*/is))
  {
   $S_File .= "/$File";
   $D_File .= "/$File";
  }
 else
  {
   $S_File = "$Source$File";
   $D_File = "$Dest$File";
  }

 if($File_Deja_Traite{$S_File} ne '')
  {return}

# print "$S_File--->$D_File--->$File\n";
 $File_Deja_Traite{$S_File} = 1;
# return;

 lstat($S_File);
 if ((! -l _) && (-f _)) #on copie le fichier
  {
   stat($S_File);
   local $date_a = -M _;
   stat($D_File);
   local $date_b = -M _;
   
#     print"($date_a) ($date_b)\n";
   if(($date_a<$date_b || $date_b eq ''))
    {
     if($date_b eq '')
	  {local($D_File_Dir) = $D_File;
	   $D_File_Dir =~ s/(.*)\/.*/$1/is;
	   if(!(-d $D_File_Dir))
	    {
		 creation_repertoires($D_File);
	    }
	  }
#     print"($date_a) ($date_b)\n";
     if(system("cp $S_File $D_File"))
      {print "Le transfert de $S_File n'a pas pu avoir lieu\n";}
     else
      {print "$S_File transfere\n";}
    }
  }
 
 $File_Deja_Traite{$S_File} = 1;
 return;
}

return 1;
