From: Matthew Vernon Date: Tue, 15 Apr 2014 15:53:15 +0000 (+0100) Subject: Reverse the contents of log files X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~webstump/git?p=modbot-uram.git;a=commitdiff_plain;h=66ffdf9bce6ef1b3f5b4252eedb01538f114ba8e Reverse the contents of log files Use "tac" to reverse files, meaning the logs are now output neatly in reverse-chronological order. The existing code tried to read everything in $webstump_home/.. ; we now only try and open errs files; this involves changing the guard condition to 0 from undef (since forwards * undef isn't undef). --- diff --git a/webstump/scripts/html_output.pl b/webstump/scripts/html_output.pl index 5503b4a..6ee3295 100644 --- a/webstump/scripts/html_output.pl +++ b/webstump/scripts/html_output.pl @@ -640,22 +640,24 @@ sub scanlogs ($$$) { my $num= sub { local ($_) = @_; return $forwards * ( - m/^errs$/ ? -1 : - m/^errs\.(\d+)(?:\.gz$)$/ ? $1 : - undef + m/^errs$/ ? 1 : + m/^errs\.(\d+)(?:\.gz$)$/ ? ($1+2) : + 0 ); }; foreach my $leaf ( sort { $num->($a) <=> $num->($b) } - grep { defined $num->($_) } + grep { $num->($_) } readdir LOGSDIR ) { my $file= "$dir/$leaf"; - if ($file =~ m/\.gz$/) { - open LOGFILE, "zcat $file |" or die "zcat $file $!"; + if ($file =~ m/\/errs.*\.gz$/) { + open LOGFILE, "zcat $file | tac |" or die "zcat $file | tac $!"; + } elsif ($file =~ /errs/) { + open LOGFILE, "tac $file |" or die "tac $file $!"; } else { - open LOGFILE, "< $file" or die "$file $!"; - } + die "Unexpected filename in scanlogs: $file"; + } while () { my $tgot= $callback->(); next unless $tgot;