32V/usr/man/tocrc

tmp=/tmp/toc$$
trap "rm $tmp ; exit" 2 3 15
if [ $# -eq 2 ]
then
	: create toc input file for one section only

	> man0/tocx$1
	for file in man$1/*.$1*
	do
		test -s $file \
	&&	< $file grep '^\.TH' | grep local >/dev/null \
	||	< $file sed -n '1p' | grep '^\.so' >/dev/null \
	||	< $file grep '\\-' |
		sed -n '1p' |
		sed \
			-e 's/.s-1//g' \
			-e 's/.s0//g' \
			-e 's/.s+1//g' \
			-e 's/  *.-  */: /' \
			-e "s/^/`basename $file | sed 's/\.\([^\.]*\)\$/(\1)/'` /" \
			-e 's/$/./' \
		>> man0/tocx$1
	done
else case $1 in
	all )
		:   tocx files for all sections and everything else

		for x in 1 2 3 4 5 6 7 8
			do
			$0 $x $x
			done
		$0 t
		;;
	t )
		:   permuted index and toc files

		if [ ! -f man0/tocx1 ]
		then
			echo "tocx? files missing; must run tocrc all first"
			exit
		fi
		sed \
			-e 's/(1c)/(1C)/' \
			-e 's/(1m)/(1M)/' \
			-e 's/(1g)/(1G)/' \
			-e 's/(3c)/(3C)/' \
			-e 's/(3m)/(3M)/' \
			-e 's/(3s)/(3S)/' \
			-e '/"\."/d' \
			man0/tocx? \
		> cattoc

		ptx -r -t -b break -f -w 108 -i ignore cattoc man0/ptxx
		cd man0; troff -g ptx.in >t.ptx ; cd ..

		for x in 1 2 3 4 5 6 7 8
		do
			< man0/tocx$x grep '^intro' >$tmp
				sed \
				-e '2,${' \
				-e '/^intro/d' \
				-e '}' \
				-e 's/ .*://' \
				-e 's/.$//' \
				-e 's/(.*) /" "/' \
				-e 's/.*/.xx "&"/' \
				-e '/""/d' \
				$tmp man0/tocx$x \
			>man0/toc$x
		done
		cd man0; troff -g toc.in >t.toc ; cd ..
		;;
	* )
		$0 $1 $1
		;;
	esac
fi
exit