3 use strict qw(refs vars);
7 our $logfile= "/var/log/news.notice";
9 our ($loghandle, $logfile_devino);
11 sub current_devino () { return join '.', (stat _)[0..1]; }
14 $months{ (qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec))[$_] }= $_
17 sub processline_core ($) {
19 my ($mon,$dom,$h,$m,$s) =
20 s/^ ([A-Z][a-z]{2}) [ ]
22 ([ 0-2]\d) : (\d\d) : (\d\d) [ ]
24 return "date re not matched" unless defined $mon;
26 return "unknown month $mon" unless defined $mon;
29 $ts= mktime($s,$m,$h, $dom,$current_year, 0,0, $isdst);
34 my $fh= new IO::File '<', "$logfile.0";
36 die "$logfile.0 $!" unless $!==&ENOENT;
39 while (defined(my $l= <$fh>)) {
40 $l =~ s/\n$// or last;
54 $loghandle= new IO::File '<', $logfile;
56 die "$logfile $!" unless $!==&ENOENT;
59 stat $loghandle or die $!;
60 $logfile_devino= join '.', (stat _)[0..1];
64 if ($lbuf =~ s/\n$//) {
68 my $xtra= <$loghandle>;
70 die "$logfile $!" if $loghandle->error;
77 next if $logfile_devino eq current_devino;
79 die "$logfile $!" unless $!==&ENOENT;
82 # current file is no longer right
84 # wait for the rest of the line ?
85 next unless $waited_eol++ > 3;