#!/usr/bin/perl

defined($la= $ENV{'NNTPMERGE_AUTHD_AS'}) || die "no la";
$la.= "\@chiark";
$outnews= "/usr/local/lib/exchange/outnews";
$route= "nyx";

$|=1;
print "200 nyxpost\r\n";
while (<>) {
    s/\s*\n$//;
    if (m/^POST$/i) {
        print "340 mmmm\r\n";
        $art= '';
        for (;;) {
            length($_=<>) || exit(1);
            last if m/^\.\r?\n$/;
            s/^\.//; s/\r\n$/\n/; $art.= $_;
        }
        defined($c= open(P,"-|")) || die "fork: $!";
        if (!$c) {
            open(STDERR,">&STDOUT");
            defined($c2= open(Q,"|-")) || die "fork: $!";
            if (!$c2) {
                exec($outnews,"--sender",$la,$route);
                die "exec: $!";
            }
            print(Q $art) || die "write: $!";
            close(Q); $? && die "outnews: $?";
            exit(0);
        }
        undef $/; $_= <P>; $/= "\n"; s/\n/ /g;
        close(P);
        if ($?) {
            print "441 $_\r\n";
        } else {
            print "240 $_\r\n";
        }
    } elsif (m/^QUIT$/i) {
        print "205 ttfn\r\n";
        exit(0);
    } else {
        print "500 too stupid\r\n";
    }
}
