#! /usr/bin/perl

$allRFCs = 1;

sub preArea {
    if ((($rfcnum, $rfcstatus, $rfcref) =
      m:^([0-9][0-9][0-9][0-9])  (...) (.*)$:) && ($rfcnum > 1500)) {
	$rfcdirname = $rfcnum;
	$rfcdirname =~ s/^0*//;
	$rfcref =~ s/ +$/ /;

	$nextmode = "&tableLine";
    }
}

sub tableArea {
    if (($rfcnum, $rfcstatus, $rfcref) =
      m:^([0-9][0-9][0-9][0-9])  (...) (.*)$:) {
	$rfcdirname = $rfcnum;
	$rfcdirname =~ s/^0*//;
	$rfcref =~ s/ +$/ /;

	$nextmode = "&tableLine";
    } elsif (m:^$:) {
	print;
	$nextmode = "&tableArea";
    } else {
	&preArea;
    }
}

sub tableLine {
    if (! m:^ +:) {
	if ($allRFCs || -d $rfcdirname) {
	    if (-d $rfcdirname) {
		print "<TR><TD VALIGN=TOP><A HREF=\"/Connected/RFC/$rfcdirname/index.html\">$rfcnum</A>";
	    } else {
		print "<TR><TD VALIGN=TOP><A HREF=\"ftp://ds.internic.net/rfc/rfc$rfcnum.txt\">$rfcnum</A>";
	    }
	    print "<TD VALIGN=TOP>$rfcstatus<TD VALIGN=TOP>$rfcref\n";
	}

	&tableArea;
    } else {
	chop;
	s/^ +/ /;
	s/ +$/ /;
	$rfcref = $rfcref . $_;

	$nextmode = "&tableLine";
    }
}

sub oneline {
    if (($rfcnum, $rfcstatus, $rfcref) =
      m:^([0-9][0-9][0-9][0-9])  (...) (.*)$:) {
	$rfcdirname = $rfcnum;
	$rfcdirname =~ s/^0*//;
	$rfcref =~ s/ +$/ /;
	while (($_ = <>) && m:^ +:) {
	    chop;
	    s/^ +/ /;
	    s/ +$/ /;
	    $rfcref = $rfcref . $_;
	}

	if ($allRFCs || -d $rfcdirname) {
	    if (-d $rfcdirname) {
		print "<TR><TD VALIGN=TOP><A HREF=\"/Connected/RFC/$rfcdirname/index.html\">$rfcnum</A>";
	    } else {
		print "<TR><TD VALIGN=TOP><A HREF=\"ftp://ds.internic.net/rfc/rfc$rfcnum.txt\">$rfcnum</A>";
	    }
	    print "<TD VALIGN=TOP>$rfcstatus<TD VALIGN=TOP>$rfcref\n";
	}
	print;
    } else {
	print;
    }
}

open(TABLE, ">indextable") || die "Can't open indextable";
select(TABLE);

$nextmode = "&preArea";

while (<>) {
    eval $nextmode;
}

select(STDOUT);
