#!/bin/sh # rfc822.txt --> rfc822.html formatter # Copyright (C) 1998, 2001 by candy # usage: r2h rfc822.txt > rfc822.html # (rfc2068.txt, rfc2822.txt and many rfc shoud be work) # $Id: r2h,v 1.10 2003/04/18 01:15:54 candy Exp candy $ # tmp1=$HOME/r2h.$$ tmp2=$HOME/r2i.$$ trap 'rm -f $tmp1 $tmp2' 1 2 15 sed ' s/&/\&/g s/>/\>/g s/%s\n", FILENAME); printf("

%s


\n", FILENAME);
	first = 1;
	end_toc = "^@@@@@@@@@@$";
}

/Table of Contents/, $0 ~ end_toc {
	if ($0 ~ end_toc) {
		printf("@@@END@OF@TABLE@@@\n");
	} else {
		if ($0 ~ /\.\.\.\./) {
			if (first) {
				end_toc = $0;
				sub(/ *\.\.\.\..*/, "", end_toc);
				sub(/^ */, "", end_toc);
				gsub(/  */, " *", end_toc);
				end_toc = "^ *" end_toc
				first = 0;
				#printf("====%s====\n", end_toc) > "/dev/tty";
			}
			key = $1;
			reftab[key] = 1;
			pre = sprintf("", key);
			sub(/ +/, "&" pre);
			printf("%s\n", $0);
		}
		else {
			print;
		}
		next;
	}
}

$1 in reftab {
	pre = sprintf("", $1);
	sub(/ +/, "&" pre);
	printf("%s\n", $0);
	delete reftab[$1];
	next;
}

$2 == "=" && !($1 in keytab) {
	if ($1 == "<\">") {
		lab = "XXQUOTE";
		ref = "\\<\"\\>";
	}
	else {
		ref = lab = $1;
	}
	keytab[$1] = sprintf("%s", lab, ref);
	pre = sprintf("@@XX%s", lab, ref);
	sub(/[^ \t]+/, pre);
	print;
	next;
}

{
	print;
}

END {
	printf("
\n") for (i in keytab) { printf("s^@@<%s@@>^%s^g\n", i, keytab[i]) > "'$tmp1'"; } } ' > $tmp2 sed -e 's/Table of Contents/TABLE OF CONTENTS/' \ -e '/TABLE OF CONTENTS/,/@@@END@OF@TABLE@@@/{/^@@@/!p;d;}' \ -e 's/[-A-Z_a-z<>"][-A-Z_a-z<>"]*/@@<&@@>/g' \ -f $tmp1 \ -e 's/@@//g' \ -e 's/@@XX//g' \ -e 's/n_a_m_e/name/g' \ $tmp2 rm -f $tmp1 $tmp2