#! /bin/sh # $XFree86$ set -x # @(#)mmdoc 1.21 /doccenter/tmadm/src/shell/s.mmdoc # general documentation generator # # Files begining with a ".TH" macro are treated as manual pages. # Files whose first line is # '\" x # where "x" is a string begining with "c", "e", "t" are also treated as # manual pages. # Files whose first line is # '\"! text # are processed by the command line "text" with the file provided # as the standard input. # Files whose first line is # '\"macro name # where "name" is the name of a file in TMMACRO will be run off with # that macro package. "name"s begining "-" will be flag arguments # to nroff. # All others are handed to nroff with -cm and mmdoc # # Assumes mdate.pl will be found by the current search path. # umask 0 # nroff must be able to write into files it closes while [ -n "$1" ] do case $1 in -D ) DrafT=-rC3 export DrafT ;; -T* ) TERM=`expr $1 : '-T\(.*\)'` case ${TERM} in eps) post="|deps" flavor=troff ;; aps) post="|apsend b=m305" flavor=troff ;; Aps) # This is a fake out so that collections # can be sent as a unit to APS-5 # instead of series of calls. Used only by # collection routine 'tcol_final' post= flavor=troff TERM=aps ;; image) post="|apsend b=m305 d=i" flavor=troff TERM=aps ;; i300) post="|dimpress" flavor=troff ;; 8300) post="|dimpress" flavor=troff TERM=aps ;; psc) post="|psdit |lp -oh" flavor=troff export TERM ;; PS) post="|psdit" flavor=troff TERM=psc export TERM ;; X100) post="" flavor=troff TERM=X100 export TERM ;; *) post= flavor=nroff ;; esac export post flavor ;; -r[ymd]* ) DocdatE="$DocdatE $1" export DocdatE dateset=yes ;; -?* ) flags="$flags $1" export flags ;; - | * ) break esac shift done if [ $# = 0 ] then set -- - fi for i { if [ "$i" != "-" -a ! -s "$i" ] then echo "Cannot input file: $i" continue fi case $i in - ) ;; * ) Line1=`line <$i` if [ ! "${dateset}" ] then # DocdatE is intentionally capitalized that way # to cut the possibility of env name collision. DocdatE=`mdate.pl $i` export DocdatE fi esac MacrO=${TMMACRO} case "${Line1}" in .TH* | "'\\\" "[cet]* ) man -T${TERM} -d ${DocdatE} $* ;; "'\\\"!"* ) cmd=`echo "${Line1}" | sed 's/^....//'` if [ "$flavor" != troff ] then cmd=`echo " ${cmd} " | sed 's/ eqn / neqn /'` fi Line1=`sed -n -e 2p -e 2q ${i}` export Line1 if [ "$flavor" = troff ] then eval '<$i' $cmd #eval `parse "$cmd" ${i}` else TERM=lp eval '<$i' $cmd fi ;; "'\\\"macro"* ) cmd=`echo "${Line1}" | sed ' s/.."macro//'" s:[ ]\([^- ]\): ${TMMACRO?}/\1:g"` cmd=`echo $cmd|sed "s;[ ]*.*/stdmacro;${MacrO?}/strings.mm ${MacrO?}/stdmacro;"` cmd="$cmd $OTHERFILES" if [ "$flavor" = troff ] then case "$cmd" in *stdmacro*) case "$flags" in *-rs[0-9]*) ;; *) flags="${flags} -rs1" esac esac eval troff -T${TERM} ${DrafT} ${DocdatE} ${flags} ${cmd} $i ${post} else eval nroff ${DrafT} ${DocdatE} ${flags} ${cmd} $i fi ;; "'\\\"text"* ) cmd=`echo "${Line1}" | sed ' s/.."text//'" s:[ ]\([^- ]\): ${TMMACRO?}/\1:g"` cmd=`echo $cmd|sed "s;[ ]*.*/docmacs;${MacrO?}/docmacs;"` if [ "$flavor" = troff ] then eval troff -T${TERM} ${DrafT} ${DocdatE} ${flags} ${cmd} $i ${post} else eval nroff ${DrafT} ${DocdatE} ${flags} ${cmd} $i fi ;; .tH* ) # Right now 2/12/85 this stuff not used for DSG work. # No enhancements to do troff done yet. # Will do as necessary if [ -r ${TMMACRO}/mandocvar ] then . ${TMMACRO}/mandocvar fi nroff -T${TERM} ${DocdatE} ${flags} \ -can ${MacrO?}/mandoc ${i} | col ;; .pH* | '' | * ) if [ -r ${TMMACRO}/mmdocvar ] then . ${TMMACRO}/mmdocvar fi if [ "$flavor" = troff ] then eval troff -T${TERM} -rW${Width:-5}i \ -rL${Length:-8.5}i \ ${DocdatE} ${DrafT} ${flags} \ /usr/bin/mmt $i ${post} else TERM=lp nroff -T${TERM} -u${Overstrike:-1} -rW${Width:-79} \ -rO${Offset:-0} -rL${Length:-66} \ ${DocdatE} ${DrafT} ${flags} \ ${MacrO?}/newmm \ ${MacrO?}/mmdoc ${TMMACRO}/custom $i | col fi ;; esac }