#!/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/\</g ' "$@" | awk ' BEGIN { IGNORECASE = 1; printf("
\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/@@>//g' \
-e 's/@@XX//g' \
-e 's/n_a_m_e/name/g' \
$tmp2
rm -f $tmp1 $tmp2