#!/usr/bin/perl -w

use utf8;
use warnings;
use strict;

BEGIN { 
    unshift(@INC,($ENV{'POPHOME'}||'@POPHOME@').'/lib')
		unless $ENV{'KUNDE_NO_PERLPATH'};
}

select(STDERR); $|=1; select(STDOUT);
use Dbase::Globals qw(get_kunde find_descr);

my $sum = 0;

if(@ARGV < 3) {
	die "Usage: $0 kundennr Monat Jahr [Zeilen [keys...]] \n";
}
my $kd = shift; my $mon = shift; my $yr = shift;
my $cnt = shift;
$ARGV[0] = "xlink" if @ARGV == 0;

my $knr = get_kunde($kd); die "Kunde '$kd' unbekannt\n" unless $knr;
print "Zähle Daten in /archiv/logs/*/$mon/$yr/ip.xlink2/$knr.*.gz...    \n";

my %sum;
my $lin=0;

foreach my $i (qw(01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21
22 23 24 25 26 27 28 29 30 31)) {
	foreach my $q(@ARGV) {
		$q = find_descr("quelle",$q);
		foreach my $qq(qw(ip.xlink ip.xlink2 ip.xlink3 ip.multi ip ip.bina)) {
			if (-f "/archiv/logs/$i/$mon/$yr/$qq/$knr.$q.gz") {
				open(IN,"gzip -d < /archiv/logs/$i/$mon/$yr/$qq/$knr.$q.gz |");
				while(<IN>) {
					next if /^#/;
					my($ext,$loc,$byte,$hr)=split;
					$byte = int($byte/1024);
					$sum{"$i-$ext"} += $byte;
					$sum += $byte;
					$lin++;
				}
			}
			if (-f "/archiv/logs/$i/$mon/$yr/$qq/$knr.$q") {
				open(IN,"/archiv/logs/$i/$mon/$yr/$qq/$knr.$q");
				while(<IN>) {
					next if /^#/;
					my($ext,$loc,$byte,$hr)=split;
					$byte = int($byte/1024);
					$sum{"$i-$ext"} += $byte;
					$sum += $byte;
					$lin++;
				}
			}
		}
	}
}
print "$sum. Die $cnt dicksten Brocken:\n";
my $len = 0;
my $line = 0;

foreach my $i (sort { $sum{$b} <=> $sum{$a} } keys %sum) {
	my($tt,$ei)=split(/-/,$i,2);
	if($len == 0) {
		$len = length($sum{$i});
        printf "TT ExtIP           %*s\n",$len, "kBytes";
	}
	printf "%2d %-15s %*s\n",$tt,$ei,$len,$sum{$i}; exit if $line++ == $cnt;
}
