#!/usr/bin/perl -w use strict; use DirHandle; use File::Basename; use File::stat; use Getopt::Long; use POSIX qw(strftime); use POSIX qw(locale_h); use locale; my $rcs = '$Id: listfiles.pl,v 1.14 2002/08/19 06:45:09 gilles Exp $ '; my $myself = $0; my $debug = 0; my $dots = 19; my $date = scalar(localtime()); my $title; GetOptions( "debug" => \$debug, "dots:i" => \$dots, ) or exit 1; my @files; @files = @ARGV; $debug and print join("\n", "
FILES:", @files, ""); my (%files, @list, %done); $debug and print "
\n";
foreach my $file (@files) {
next unless (-f $file);
my ($dir,$base,$lang,$type) = split_name($file);
next unless defined($dir);
$debug and print "($dir,$base,$lang,$type)\n";
my $source = get_depend($file);
$debug and print "source $source\n";
my $inode;
if (-f $source) {
$inode = stat($source);
}else{
$inode = stat($file);
}
my $size = int(($inode->size / 1024) + 0.5);
my $size_str = sprintf("%3dk", $size);
my $mtime = $inode->mtime;
setlocale(LC_ALL, $lang);
my $mtime_str = strftime "%Y %b %e", localtime($mtime);
$debug and print "LANG $lang $mtime_str\n";
$files{$file}{'dir'} = $dir;
$files{$file}{'base'} = $base;
$files{$file}{'lang'} = $lang;
$files{$file}{'ext'} = $type;
$files{$file}{'size'} = $size_str;
$files{$file}{'mtime_str'} = $mtime_str;
$files{$file}{'mtime'} = $mtime;
}
$debug and print "\n";
foreach my $file (sort
{ $files{$a}{'base'} cmp $files{$b}{'base'}
||
$files{$a}{'lang'} cmp $files{$b}{'lang'}
||
$files{$a}{'ext'} cmp $files{$b}{'ext'}
}
keys %files) {
my $dir = $files{$file}{'dir'} ;
my $base = $files{$file}{'base'} ;
my $lang = $files{$file}{'lang'} ;
my $ext = $files{$file}{'ext'};
my $size = $files{$file}{'size'};
my $mtime_str = $files{$file}{'mtime_str'};
my $mtime = $files{$file}{'mtime'};
my $date;
if ((time - $mtime) <= 60*60*24*30) {
$date = "$mtime_str";
}else{
$date = $mtime_str;
}
push(@list,
"\n$date "
. $lang
. ") $base "
. space($dots,$base)
)
unless exists($done{"$base\/$lang"});
push (@list, "$size $ext");
$done{"$base\/$lang"}++;
$debug and print
"$base\/$lang", " : ",
$done{"$base\/$lang"}, "\n";
}
print <