#!/usr/bin/perl -w

# Skrypt do dekompresji artykuw i przesyania ich do inn'a
#
# Andrzej Radecki <radecki@wpk.p.lodz.pl>
# GoTaR <gotar@priv0.onet.pl>
#
# Ostatnie zmiany: 13.08.2001r.

use strict;
use Feeder::feeder;


#my ($MAINDIR, $archive, $INNXMIT, $NNTPSERVER, $ODP2RE, $QP28bit, $CP2ISO, $paczka, $uncompr);

my $TMP		= "$Feeder::feeder::MAINDIR/tmp";
my $ARTICLES	= "$TMP/articles";
my $LIST	= "$TMP/list";

mkdirhier("$ARTICLES");

my $n = 0;

open LIST, ">$LIST" or die "Can't create file $LIST: $!\n";
my $headers;
print "Decompressing file $Feeder::feeder::paczka\n";
open PACZKA, "$Feeder::feeder::uncompr" or die "Can't open file $Feeder::feeder::paczka: $!\n";
local $/="\r\n\r\n";
while (<PACZKA>) {
	$n++;
	s/\r//g;
	$headers=$_;
	my $quoted = parse_headers(\$headers);
	/^Xref: (.+)$/m || do {warn "Can't find \"Xref\" header in article $n\n"; next};
	count_xref($1);
	open POST, ">$ARTICLES/$n" or die "Can't create file $ARTICLES/$n: $!";
	print POST "$headers";
	local $/="\r\n\.\r\n";
	$_=(<PACZKA>);
	s/\.\r\n$//;
	s/\r//g;
	parse_contents(\$_, $quoted);
	print POST;
	close POST or warn "Can't close file: $!\n";
	print LIST "$ARTICLES/$n\n";
	local $/="\r\n\r\n";
}
close PACZKA or warn "Can't close file $Feeder::feeder::paczka: $!\n";
print "Decompressed $n articles\n";

close LIST or warn "Can't write to file $LIST: $!\n";
print "Feeding inn\n";
my $ret=system($Feeder::feeder::INNXMIT, $Feeder::feeder::NNTPSERVER, "$LIST") >> 7;
unlink <$ARTICLES/*>;
unlink "$LIST";
if ($ret == 0) {print "Articles sent successfully\n"}
else {die "An error occured while sending articles to inn, giving up.\n"}

movepack();
updategroups();

sub count_xref { # $xref
#	print "$_[0]\n";
	my @xref = split(' ', $_[0]);
	shift (@xref);
	foreach my $xref (@xref) {
		my ($gr, $nr) = split (':', $xref);
		$Feeder::feeder::numery{$gr}=$nr if (defined($Feeder::feeder::numery{$gr}) && $Feeder::feeder::numery{$gr} < $nr);
	}
#		print %Feeder::feeder::numery,"\n";
}
