#!/afs/athena/contrib/perl/p

require 'chat2.pl';

open(ZN, "$ENV{'HOME'}/.znews") || die "No .znews file\n";

while(<ZN>){
	split;
	$last{$_[0]} = $_[1] if $_[0];
}
close(ZN);
&chat'open_port('news.mit.edu', 119);
&listen(5);
while(1){
	for $grp (keys %last){
	    &chat'print("group $grp\n");
	    $line = &listen(5);
	    ($garbage, $garbage, $garbage, $l, @garbage)=split(/ +/, $line);
	    if($l > $last{$grp}){
		&zme($l - $last{$grp}." new articles in $grp\n");
		$last{$grp}=$l;
		&wzn;
	    }
	    sleep(20);
	}
}

sub listen {
        local($secs) = @_;
        local($return,$tmp) = "";
        while (length($tmp = &chat'expect($secs, '(.|\n)+', '$&'))) {
                print $tmp if $trace;
                $return .= $tmp;
        }
        $return;
}

sub zme {
        local($message) = @_;
        open (ZME, "|zwrite -n -q -d -s 'Znews' $ENV{'USER'}");
        print(ZME $message);
        close(ZME);
}

sub wzn {
    `rm $ENV{'HOME'}/.znews`;
    open(MZN, ">$ENV{'HOME'}/.znews") || die "Can't write .znews\n";
    while(($grpn, $gl) = each %last){
	print MZN "$grpn $gl\n";
    }
    close(MZN);
}






