package Ernad::Common; use strict; use warnings; use Carp qw(confess); #use File::Copy; #use File::Basename; #use File::Path; #use File::Slurper; #use File::Slurp; #use File::stat; use Data::Dumper; #use Encode; #use Ernad::Constant; #use Ernad::Dates; #use Ernad::Files; #use Krichel::Shoti; #use Krichel::File; binmode(STDOUT,":utf8"); our $e; sub does_file_need_renewal { my $file=shift // confess "I need a file defined here."; my @others=@_; my $verbose=0; if(not -f $file) { if($verbose) { print "file $file is not there, it needs renewing\n."; } return 1; } if($verbose) { print "file $file is there ... "; } if(-z $file) { if($verbose) { print "file $file is empty, it needs renewing\n."; } return 1; } ## -M Script start time minus file modification time, in days. my $target_time=-M $file; if($verbose) { print "target_time is $target_time\n"; } if($verbose) { print Dumper @others; } foreach my $file (@others) { if($verbose) { print "considering $file as renewal target\n"; } if(not $file) { confess "I don't have the file $file"; } if(-d $file) { ## directory case, not treated recursively my $dirname=$file; opendir( my $dir, $dirname ) or die "Error: can't open dir $dirname"; my $file; while ($file = readdir $dir ) { ## skipping "." and ".." if ( ($file eq "." ) or ( $file eq ".." )) { next; } $file="$dirname/$file"; if(-M $file < $target_time) { if($verbose) { print " $file is newer, renewal required\n"; } return 1; } } ## finished with this next; } if(not -f $file) { die "I can not find the file '$file'"; } #if(not -M $file <) { # die "I can not find the mtime on file '$file'"; #} if($verbose) { print "time on file $file is ", -M $file, "\n"; } if(-M $file < $target_time) { if($verbose) { print " but $file is newer, renewal required\n"; } return 1; } } if($verbose) { print " no reed to renew\n"; } return 0; } 1;