V8/usr/src/cmd/monk/cmd/monk.sh


#
# initalizations
#
arg0=tmonk

if [ "$CANDEST" ]
then
	candest="CANDEST=$CANDEST"
fi

if [ "$I10DEST" ]
then
	i10dest="I10DEST=$I10DEST"
fi

if [ $arg0 = tmonk ]
then
	case `uuname -l` in
	
	mhuxm)
		MHOME=/m2/c1122/frodo/lib/monk
		STDIN=-
		TERM=-Ti10
		eqn='eqn'
		i10send='i10send'
		nulloutput=
		output="|$i10dest i10send -von"
		roff='troff'
		;;
	
	alice)
		STDIN=/dev/stdin
		TERM=-Ti10
		eqn='eqn'
		i10send='/usr/frodo/bin/ui10send'
		nulloutput=
		output="|$i10dest /usr/frodo/bin/ui10send -von"
		roff='troff'
		;;
	
	araki)
		STDIN=/dev/stdin
		TERM=-Ti10
		eqn='eqn'
		i10send='ui10send'
		nulloutput=
		output='|ui10send -d5211out -von'
		roff='troff'
		;;
	
	*)
		STDIN=/dev/stdin
		TERM=-T202
		eqn='eqn'
		i10send='ui10send'
		nulloutput=
		output="|$candest dcan"
		roff='troff'
		;;
	
	esac

else
	STDIN=-
	TERM=-T${TERM-450}
	eqn='neqn'
	nulloutput=
	output=
	roff='nroff'
fi

#
# path names for macros and default references
#
MHOME=${MHOME-/usr/lib/monk}

MDB=${MDB-$MHOME/db}

EQN=/usr/pub/eqnchar

MP=${TMAC-$MHOME}/tmac.p

REFS=${REFS-/usr/frodo/refs/index}

PATH=$MHOME:$PATH
export PATH

#
# get options
#
for i
do
	case "$i" in

#
# troff, reference or output options
#
	-12)
		pitch=-12
		;;

	-A*)
		Acmd="|"`expr "$i" : '..\(.*\)'`
		;;

	-B*)
		Bcmd="|"`expr "$i" : '..\(.*\)'`
		;;

	-E)
		options="$options -e"
		;;

	-R*)
		REFS=`expr "$i" : '..\(.*\)'`
		;;

	-T202)
		TERM=$i
		output='|d202'
		;;

	-T9700)
		TERM=$i
		output='|dpr -mx'
		;;

	-Taps)
		TERM=$i
		output='|apsend'
		;;

	-Tcanon)
		i=-T202
		TERM=$i
		output="|$candest dcan"
		;;

	-Tcat)
		TERM=$i
		output='|gcat -f "$files"'
		;;

	-Timagen)
		i=-Ti10
		TERM=$i
		output="|$i10dest $i10send -von"
		;;

	-Tjerq)
		i=-T202
		TERM=$i
		output="|proof; cat /tmp/e$$; rm -f /tmp/e$$"
		exec 2> /tmp/e$$
		;;

	-Tlp)
		TERM=$i
		output='|lpr'
		;;

	-T-)
		output=$nulloutput
		;;

	-T*)
		TERM=$i
		;;

	-a)
		options="$options $i"
		roff=troff
		output=
		;;

	-x)
		verbose=on
		;;

	-*)
		preprocessors="$preprocessors $i"
		;;

	*)
		files="$files $i"
		;;

	esac
done

#
# find what pre processors monk needs
#
preprocessors=`
egrep -h '\|(source|remember|reference|equation|e|table|picture|ideal|ped|graph)[(<[{'\''"\`]|\|begin[(<[{'\''"\`](source|remember|reference|equation|e|table|picture|ideal|ped|graph)' $files |
awk '
/\|source[(<[{'\''"\`]/		{soelim++}
/\|begin[(<[{'\''"\`]source/	{soelim++}
/\|remember[(<[{'\''"\`]/	{cite++}
/\|begin[(<[{'\''"\`]remember/	{cite++}
/\|reference[(<[{'\''"\`]/	{refer++}
/\|begin[(<[{'\''"\`]reference/	{refer++}
/\|equation[(<[{'\''"\`]/	{eqn++}
/\|begin[(<[{'\''"\`]equation/	{eqn++}
/\|e[(<[{'\''"\`]/		{eqn++}
/\|begin[(<[{'\''"\`]e/		{eqn++}
/\|table[(<[{'\''"\`]/		{tbl++}
/\|begin[(<[{'\''"\`]table/	{tbl++}
/\|picture[(<[{'\''"\`]/	{pic++}
/\|begin[(<[{'\''"\`]picture/	{pic++}
/\|ideal[(<[{'\''"\`]/		{ideal++}
/\|begin[(<[{'\''"\`]ideal/	{ideal++}
/\|ped[(<[{'\''"\`]/		{tped++}
/\|begin[(<[{'\''"\`]ped/	{tped++}
/\|graph[(<[{'\''"\`]/		{grap++; pic++}
/\|begin[(<[{'\''"\`]graph/	{grap++; pic++}
END 				{
				 x = ""
				 if (soelim)  x = x " -s"
				 if (refer) x = x " -r"
				 if (cite)  x = x " -cn"
				 if (ideal) x = x " -i"
				 if (grap)  x = x " -g"
				 if (pic)   x = x " -p"
				 if (tped)  x = x " -tp"
				 if (tbl)   x = x " -t"
				 if (eqn)   x = x " -e"
				 print x
				}
'`" $preprocessors"

#
# get preprocessors and other options
#
for i in $preprocessors
do
	case "$i" in

#
# pre-processors
#
	-c)
		ccmd='|col'
		;;

	-cn)
		cncmd='|cite'
		erroutput='2>> .cite'
		;;

	-e)
		ecmd="|$eqn"
		;;

	-g)
		gcmd='|grap'
		;;

	-i)	icmd='|ideal -q'
		;;

	-p)
		pcmd='|pic'
		;;

	-r)
		rcmd="|refer -e -n -p $REFS |sed -f $MHOME/dorefer"
		;;

	-s)
		scmd='|soelim /dev/stdin'
		;;

	-t)
		tcmd='|tbl'
		;;

	-tp)
		tpcmd='|tped'
		;;

	-*)
		options="$options $i"
		;;

	esac
done


#
# special handeling for terminals
#
	if [ "$pitch" ]
	then
		case $TERM in

		-T300|-T300s|-T450|-T1620)
			TERM="$TERM-12"
			;;
		esac
	fi

	case $arg0  in

	tmonk)
		case $TERM in

		-Tcat|-Taps|-Ti10|-T202)
			;;


		-Tdover)
			TERM=
			;;

		*)
			echo 1>&2 Invalid $TERM
			exit 1
			;;

		esac
		;;

	nmonk)
		if [ "ccmd" ]
		then
			case $TERM in

			-T300|-T300s|-T450|-T4014|-Ttek|-T1620)
				ccmd="|col -f|greek $TERM"
				;;

			-T300-12|-T300s-12|-T450-12|-T1620-12)
				ccmd='|col -f|greek $TERM'
				options='$options -rW72'
				;;

			-T37|-T4000a|-T382|-TX)
				ccmd='|col -f'
				;;

			-Thp|-T2621|-T2640|-T2645)
				ccmd='|colcrt -'
				;;

			-T735|-T745)
				ccmd='|col -x'
				;;

			-T43)
				ccmd='|col -x'
				options='$options -rW75'
				;;

			-T40/4|-T40/2)
				ccmd='|col -b'
				;;

			esac
		fi

		case $TERM in

		-T1620)
			TERM=-T450
			;;

		-T1620-12)
			TERM=-T450-12
			;;

		-T37|-Ttn300|-T300S|-T300*|-T450*)
			;;

		*)
			TERM=
			;;

		esac
		;;

	*)
		echo 1>&2 This command must be called nmonk or troff
		exit 1
		;;

	esac

#
# special handleing for pic and eqn
#
if [ "$pcmd" ]
then
	macro="$macro $MP"

	case $TERM in

	-Ti10)
		pcmd="$pcmd -T240"
		;;

	-T202)
		pcmd="$pcmd -D"
		;;

	*)
		pcmd="$pcmd $TERM"
		;;

	esac
fi

if [ "$ecmd" ]
then
	case $TERM in

	-Ti10)
		ecmd="$ecmd -r240 -m6"
		;;

	-Taps)
		ecmd="$ecmd -Taps"
		;;

	-T202)
		ecmd="$ecmd -T202"
		;;

	esac

	ecmd="$ecmd -d $EQN $STDIN"
fi

#
# use default terminal for 202 so pic won't get confused with -T202
#
if [ "$TERM" = -T202 ]
then
	TERM=
fi

#
# do it
#
if [ $verbose ]
then
	echo 1>&2 "$MHOME/monk -d $MDB $files | sed -f $MHOME/dokludge $Bcmd \\
	$scmd $cncmd $rcmd $icmd $gcmd $tcmd $pcmd $tpcmd $ecmd $Acmd \\
	| $roff $TERM $options $macro - $erroutput $ccmd $output"
fi
exec sh -c "exec $MHOME/monk -d $MDB $files | sed -f $MHOME/dokludge $Bcmd \\
	$scmd $cncmd $rcmd $icmd $gcmd $tcmd $pcmd $tpcmd $ecmd $Acmd \\
	| $roff $TERM $options $macro - $erroutput $ccmd $output"