#!/usr/bin/perl

# script for cutting a hpt's log-file
#
# (c)2002 sven(2:5030/1346)

use Time::Local;

$templog='/tmp/worklog.tmp';

if ( $#ARGV < 1 )
{   print "syntax is:    cut-hptlog.pl /var/fido/logs/hpt.log 14\n";
    print "\n";
    print "where first parametr is FULL path to hpt's log-file,\n";
    print "and second - is a number of days ";
    print "what information in log will be saved\n";
    <>;
    exit;
};
die "Logfile ($ARGV[0]) not found" unless (-f $ARGV[0]);

$saveday = $ARGV[1];
$keepit=0;

($x,$x,$x,$day,$mon,$year,$x,$x,$x)=localtime(time()-$saveday*24*60*60);
$save = timelocal(0,0,0,$day,$mon,$year);
($x,$x,$x,$day,$mon,$year,$x,$x,$x)=localtime(time());

open OLDLOG,$ARGV[0] || die "$ARGV[0] not found! :(";
open NEWLOG,'>'.$templog || die "Cannot create temp file ($templog)! :(";

while (<OLDLOG>)
{
   if (/\A----------\s+\S+\s+(\d+)\s+(\w+)\s+(\d+)/)
   {
        my $lday=$1;
        my %monthnum = (
        'Jan' => 0,
        'Feb' => 1,
        'Mar' => 2,
        'Apr' => 3,
        'May' => 4,
        'Jun' => 5,
        'Jul' => 6,
        'Aug' => 7,
        'Sep' => 8,
        'Oct' => 9,
        'Nov' => 10,
        'Dec' => 11,);
        my $lmon=$monthnum{$2};
        my $lyear=$3+100;
        my $ldate = timelocal(0,0,0,$lday,$lmon,$lyear);
        if ($ldate >= $save) { print NEWLOG; $keepit = 1; }
        else {$keepit = 0};
    }
    else { if ($keepit == 1) {print NEWLOG}};
}

%monthnum = (
0  => 'Jan',
1  => 'Feb',
2  => 'Mar',
3  => 'Apr',
4  => 'May',
5  => 'Jun',
6  => 'Jul',
7  => 'Aug',
8  => 'Sep',
9  => 'Oct',
10 => 'Nov',
11 => 'Dec',);

print NEWLOG "\n";
printf NEWLOG "---------- Число: %02d %s %02d Лог обрезан нахрен!\n",
              $day,$monthnum{$mon},$year-100;
print NEWLOG "\n";

close OLDLOG;
close NEWLOG;
rename $templog, $ARGV[0];

print "File: $ARGV[0] is succesfully cutted.\n";


syntax highlighted by Code2HTML, v. 0.9.1