#!/usr/athena/bin/perl -s

push(@INC,
     '/rtfm/mserv',
     '/afs/athena.mit.edu/user/j/i/jik/src/mail-server');

require 'header.pl';

pipe(GETDATEREADIN, GETDATEWRITETO);
pipe(GETDATEREADFROM, GETDATEWRITEIN);

if (fork) {
    close(GETDATEREADIN);
    close(GETDATEWRITEIN);
    $oldselect = select(GETDATEWRITETO);
    $| = 1;
    select($oldselect);
}
else {
    close(GETDATEWRITETO);
    close(GETDATEREADFROM);
    $oldselect = select(GETDATEWRITEIN);
    $| = 1;
    select($oldselect);
    open(STDOUT, ">&GETDATEWRITEIN") || die;
    open(STDIN, "<&GETDATEREADIN") || die;
    close(GETDATEWRITEIN);
    close(GETDATEREADIN);
    exec("/rtfm/faq_archiver/getdate");
}

while (<>) {
    chop;
    if ($_ =~ /\.Z$/) {
	open(ARTICLE, "-|") || exec "zcat", $_;
    }
    else {
	open(ARTICLE, $_) || die "open: $_: $!.\n";
    }
    ($next, %headers) = &header'parse(undef, "main'ARTICLE");
    $date = &header'field_value('date', %headers);
    close(ARTICLE);
    if ($date) {
	print GETDATEWRITETO "$date\n" || die;
	$numdate = <GETDATEREADFROM>;
	if ($numdate > 0) {
	    utime($numdate, $numdate, $_) || die "utime: $_: $!";
	    print "Changed date of $_ to $date.\n" if ($debug);
	}
    }
}
