#!/bin/sh
# MFOUR="m4 -B 8192"
MFOUR="m4"

(cat << 'END'
undefine(`eval')
undefine(`expr')
undefine(`len')
undefine(`index')
undefine(`format')
undefine(`include')
undefine(`substr')
undefine(`paste')
define(INDENT,0.5i)
define(TAGOFF,1i)
define(KEYWORD,`')
define(COMMENT,`')
define(TITLE,`
.ND
.pl 100i
.po 3
.na
.SH
$2
')
define(USAGE,`.LP
.nf
.in +INDENT
$1
.in -INDENT
.fi')
define(ALIAS,`dnl')
define(BEGIN_ARGUMENTS, .SH
`Arguments:'
.LP
.in +TAGOFF
)
define(END_ARGUMENTS, `.in -TAGOFF')
define(ARGUMENTS,`.SH
`Arguments:'
.LP
.in +INDENT
$1
.in -INDENT
')
define(ARG,`.LP
.in +TAGOFF
.ti -\w@$1:\ @u
$1:\ $2
.in -TAGOFF')
define(ITEM,``.LP
.in +TAGOFF
.ti -\w@$1: @u
$1: $2
.in -TAGOFF'')
define(OITEM,`.IP $1 1i
$2')
define(DESCRIPTION,`.SH
`Description:'
.IP "" INDENT
$1
')
define(NOTE,`.SH
`Note:'
.IP "" INDENT
$1
')
define(VALUE,`.SH
`Value:'
.IP "" INDENT
$1
')
define(SECTION,`.SH
$1
.IP "" INDENT
$2
')
define(VALUES,`.SH
`Values:'
.IP "" INDENT
$1
$2
')
define(REFERENCES,`.SH
`References:'
.IP "" INDENT
$1
')
define(SEEALSO,`.SH
See Also:
.IP "" INDENT
$1
')
define(EXAMPLES,`.SH
`Examples:'
.IP "" INDENT
.nf
$1
')
define(LINK,`$1')
define(CTRL,`^$1')
define(LANG,`M4_LQ$1M4_RQ')dnl
define(ITALIC,`$1')dnl
define(BOLD,`$1')dnl
define(PARA,`.IP "" INDENT')
define(DOTS,`\&...')
define(LDOTS,`\&...')
define(greekGamma,`Gamma')
define(greekalpha,`alpha')
define(greekpi,`pi')
define(greekmu,`mu')
define(greeksigma,`sigma')
define(greeklambda,`lambda')
define(boldgreekbeta,`beta')
define(boldgreekepsilon,`epsilon')
define(NE,`!=')
define(EQ,`=')
define(GE,`>=')
define(GT,`>')
define(LE,`<=')
define(LT,`<')
define(EQBOLD,`$1')
define(EQN,`$1')
define(DEQN,`
.DS B
$2
.DE
')
define(DEQTEX,`')
define(DEQHTML,`')
END
# Fix up the input to protect things that m4 is sensitive about.
sed '
/^ALIAS/,/^EXAMPLES/s/^ *//
/^ARGUMENTS/,/^EXAMPLES/s/^ *//
/^DESCRIPTION/,/^EXAMPLES/s/^ *//
s/unix/M4_unix/g
s/#/M4_HASH/g
s/\\(/M4_LP/g
s/\\)/M4_RP/g
s/\\/\\\\/g
s/^\./\\\&./
s/(\./(\\\&./g
s/`/M4_LQ/g
s/'\''/M4_RQ/g
s/,/M4_COMMA/g
s/@@/,/g
s/ifelse/M4_IFELSE/g
' $*) | $MFOUR |sed '
/^$/d
s/^BLANK$//
s/DOTS/\.\.\./g
s/M4_unix/unix/g
s/M4_HASH/#/g
s/M4_LP/(/g
s/M4_RP/)/g
s/M4_LQ/`/g
s/M4_RQ/'\''/g
s/M4_COMMA/,/g
s/M4_IFELSE/ifelse/g
'