#!/usr/local/bin/perl

require 'find.pl';
require '/usr/local/mserv/header.pl';

open(INDEX, "/afs/sipb.mit.edu/project/periodic-postings/news.answers/index") || die;

while (<INDEX>) {
    split;
    $name = $_[0];
    $name =~ tr/A-Z/a-z/;
    $archive_names{$name}++;
}

close(INDEX);

&find($ARGV[0]);

sub wanted {
    local($file, $low_name) = $_;
    ($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($file);
    if (-f _) {
	($archive_name, $compressed) = ($name =~ m,.*\.answers/(.*)(\.Z|)$,);
	if ($compressed) {
	    open(FAQ, "-|") || exec "zcat", $file;
	}
	else {
	    open(FAQ, $file) || die "Opening $file: $!.\n";
	}
	($nextline, %mainheaders) = &header'parse(undef, "main'FAQ");
	($nextline, %auxheaders) = &header'parse($nextline, "main'FAQ");
	close(FAQ);
#	$archive_name = (&header'field_value('news-answers-archive-name',
#					     %mainheaders) ||
#			 &header'field_value('news-answers-archive-name',
#					     %auxheaders) ||
#			 &header'field_value('archive-name', %mainheaders) ||
#			 &header'field_value('archive-name', %auxheaders));
	$subject = &header'field_value('subject', %mainheaders);
	$newsgroups = &header'field_value('newsgroups', %mainheaders);
	if ($archive_name && $subject && $newsgroups) {
	    $low_name = $archive_name;
	    $low_name =~ tr/A-Z/a-z/;
	    printf(STDERR "%s%s%s\n", 
		   $archive_names{$low_name} ? "     " : "BAD: ",
		   $found{$low_name} ? "DUP: " : "     ",
		   $archive_name);
	    $found{$low_name}++;
	    $entries{$low_name} = 
		sprintf("%s%s\t%s\n\t%s\n", $archive_name, $compressed,
			$subject, $newsgroups);
	}
	else {
	    printf(STDERR "Missing headers in $name.\n");
	}
    }
}

foreach $name (sort keys %entries) {
    print $entries{$name};
}
