#!/usr/bin/perl -w

# Skrypt do dekompresji artykuw do spoola slrnpulla
#
# GoTaR <gotar@priv0.onet.pl>
# 
# Ostatnie zmiany: 13.08.2001r.

use strict;
use Feeder::feeder;


make_slrnpull_hierarchy($Feeder::feeder::SLRNDIR);

my $headers;
my $quoted=0;
print "Rozpakowywanie paczki do spoola...\n";
open PACZKA, "$Feeder::feeder::uncompr" or warn "! $Feeder::feeder::paczka: $!\n";
local $/="\r\n\r\n";
while (<PACZKA>) {
	s/\r//g;
	$headers=$_;
	my $quoted = parse_headers(\$headers);
	/^Xref: (.+)$/m;
	open_post($1);
	print POST "$headers";
	$/="\r\n\.\r\n";
	$_=(<PACZKA>);
	s/\r//g; s/\.\n$//;
	parse_contents(\$_,$quoted);
	print POST;
	close POST or warn "Nie mog zamkn postu: $!\n";
	$quoted=0;
	$/="\r\n\r\n";
}
close PACZKA or warn "Nie mog zamkn $Feeder::feeder::paczka: $!\n";

movepack();
updategroups();
slrnpull_expire($Feeder::feeder::UPDATE_ACTIVE,$Feeder::feeder::SLRNDIR,$Feeder::feeder::EXPIRY_TIME);



sub make_slrnpull_hierarchy {
	foreach (keys(%Feeder::feeder::numery)) {
		s/\./\//g;
		mkdirhier("$_[0]/news/$_");
	}
}


sub slrnpull_expire {

if ("$_[0]" eq "yes") {
	print "Uaktualnianie pliku active slrnpull'a\n";
	open PIPE, ">>$_[1]/slrnpull.conf" or die "Nie mog otworzy pliku konfiguracyjnego slrnpulla ($_[1]/slrnpull.conf): $!\n";
	my $size= -s "$_[1]/slrnpull.conf";
	print PIPE "$_\n" foreach (keys(%Feeder::feeder::numery));
	close PIPE or warn "Nie mog zamkn pliku konfiguracyjnego slrnpulla ($_[1]/slrnpull.conf): $!\n";
	system "slrnpull -d $_[1] --expire";
	truncate "$_[1]/slrnpull.conf", $size;
	print "Uaktualnianie zakoczone.\n";
} else {
	print "Expiracja newsw...\n";
	foreach (keys(%Feeder::feeder::numery)) {
		s/\./\//g;
		my $expiredir="$_[1]/news/$_";
		unlink "$expiredir/.minmax" if -f "$expiredir/.minmax";
		unlink "$expiredir/.overview" if -f "$expiredir/.overview";
		opendir EXPIREDIR, $expiredir or warn "Nie mog otworzy $expiredir: $!\n";
		foreach (readdir EXPIREDIR) {
			unlink "$expiredir/$_" if (stat("$expiredir/$_"))[9]+$_[2]*86400<time;
		}
	closedir EXPIREDIR or warn "Nie mog zamkn $expiredir: $!\n";
	}
	print "Ok.\n";
}
}


sub open_post { # $xref
	my @xref = split(' ', $_[0]);
	shift (@xref);
	my $first=1;
	my $post;
	foreach my $xref (@xref) {
		my ($gr, $nr) = split (':', $xref);
		next unless defined($Feeder::feeder::numery{$gr});
		$Feeder::feeder::numery{$gr}=$nr if ($Feeder::feeder::numery{$gr} < $nr);
		$_=$gr;
		s/\./\//g;
		if ($first) {
			$post="$Feeder::feeder::SLRNDIR/news/$_/$nr";
			open POST, ">$post" or warn "Nie mog utworzy pliku $post: $!\n";
			$first=0;
		} else {
			link "$post", "$Feeder::feeder::SLRNDIR/news/$_/$nr";
		}
	}
}
