#!/usr/bin/perl sub FileInfo { my $file = shift; my $size = ( -s $file ); my $size= int(($file/1024)*10)/10; my $date_str= localtime((stat($file))[9]); return "$size Kb $date_str"; } use File::Basename; $imagedir="freefem/"; $dir=" il manque un parametre $#ARGV "; if ( $#ARGV == 0 ) { $dir=$ARGV[0]; } ( -d $dir ) || die " Erreur $dir n est pas un directory ! "; open(file,"ls -1 $dir/[Ff]ree*++*|") || die " Erreur ouverture "; $kk=0; $k=0; $VV = "00000 00000 00000"; FILE: while (<file>) { chop; # next FILE if /^l/ ; # un lien on saut # next FILE if /^d/ ; # un dir on saut next if ( -d $_ ); next if ( -l $_ ); # ($mode,$nhdcopi,$name,$projet,$size,$mois,$jour,$an,$fichier)=split; $fichier=$_; $dir=dirname($fichier); $file=basename($fichier); $f=$file; $p=$file; $v=$file; $s=$file; # $v =~ s/.*\+\+[.v-]?//; $v =~ s/^(.*\+\+[.v-]*)([1-9][-.0-9]*[0-9])(.*)$/\2/; $p =~ s/^(.*\+\+[.v-]*)([1-9][-.0-9]*[0-9])(.*)$/\1/; $s =~ s/^(.*\+\+[.v-]*)([1-9][-.0-9]*[0-9])(.*)$/\3/; next FILE if $v !~ /^[1-9][-.0-9]*[0-9]$/; ($va,$vb,$vc) = split(/[-.]/,$v); $clef="$p $s"; if ( $iclef{$clef} == "" ) { $iclef{$clef}=++$kk;} $i=$iclef{$clef}; # print " -- $p , $v , $s , $clef ,, $i \n"; $pi[$i]=$p; $si[$i]=$s; $vi[$i] = sprintf("%05d %05d %05d;%s",$va,$vb,$vc,$vi[$i]); $VI= sprintf("%05d %05d %05d",$va,$vb,$vc); if($VV le $VI) { $VV=$VI;} $fk[$k] = $_; $ki[$i] = "$k;$ki[$i]"; $k++; # @item=split(/-/); } #exit 1; ($vv1,$vv2,$vv3) = split(/ /,$VV); $ver = sprintf("%d.%d-%d",$vv1,$vv2,$vv3); print " last version: $ver \n"; for ($i=1;$i<=$kk;$i++) { # print " $i --- \n" ; # print " $pi[$i]\n"; # print " $si[$i]\n"; # print " $vi[$i]\n"; @vvv=split(/;/,$vi[$i]); @kkk=split(/;/,$ki[$i]); $jj=0; for ($j=0;$j<$#vvv;$j++) { if ( $vvv[$jj] le $vvv[$j]) { $jj=$j;} } # print " $vvv[$jj] $kkk[$jj] ??? \n"; $fff=$fk[$kkk[$jj]]; # print "$fff \n"; $filei[$i] = $fff; $tt[$i] = $si[$i] ; } # add munal file for ("HISTORY","manual-full.pdf","manual.pdf","") { # print "$dir/$_ ", -f "$dir/$_", "\n"; next if !( -f "$dir/$_") ; $filei[$kk]="$dir/$_"; $tt[$kk]="$_"; $kk++; } # clean the tt array for (@tt) { s/^.exe$/Setup file for Window 95,98,NT,2000, XP/; s/^_MacOsX.tgz$/MacOs 10.3 Cocoa OpenGL (tar+gzip)/; s/^_MacOS.sit$/MacOS 9 Powerpc \(carbon StuffIt Archive\)/; s/^.tar.gz$/All the sources (tar+gzip)/; s/[.]tar[.]gz$/ (tar+ gzip file)/; s/[.]tgz$/ (tar+ gzip file)/; s/[.]zip$/ (zip file)/; s/[.]pdf$/ (pdf file)/; s/^manual-full/Full new manual /; s/^manual /Old manual /; s/_/ /g; } # ici generation de la liste des telechargements # $tt[i] : file caracteristique # $filei[i] : file path $download = ""; for ($i=0;$i<=$#filei;$i++) { $file = $filei[$i]; # ($mode,$nhdcopi,$name,$projet,$size,$mois,$jour,$an,$fichier)=split; $dir=dirname($file); $bfile=basename($file); $size = ( -s $file ); $size= int(($size/1024)*10)/10; $date_str= localtime((stat($file))[9]); # $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime ; # $date_str = strftime "%a %b %e %H:%M:%S %Y", #$write_secs[0], $write_secs[1], $write_secs[2], $write_secs[4], $write_secs[5] ; # print "\n @write_secs $date_str \n"; # $date_str = ctime((stat($file))[9]); # $date_str =scalar localtime($write_secs); $download .= "\n<li> $tt[$i] \n <a href=\"$file\"> $bfile </a>\n <font size=-1> $size Kb $date_str </font> </li> \n"; } $manpdf=FileInfo($dir."/manual-full.pdf"); $omanpdf=FileInfo($dir."/manual.pdf"); $dateofday=localtime(); #print " $download " ; open(fout,">freefem++.htm"); while (<STDIN>) { s/\@ver\@/$ver/; s,\@imagedir\@,$imagedir,; s/\@dateofday\@/$dateofday/; s/\@download\@/$download/; s/\@dir\@/$dir/; s/\@manpdf\@/$manpdf/; s/\@omanpdf\@/$omanpdf/; print fout $_; } close(file); close(fout);