4.2BSD/usr/man/tocrc

#! /bin/sh
tmp=/tmp/toc$$
troff=itroff
trap "rm $tmp ; exit" 2 3 15
if [ $# -eq 2 -a $1 = "3" ]
then
	: create toc input files for section 3 only

	( cd man3 ; for x in 3 3f 3m 3n 3s 3x 3c
	    do
		/usr/lib/getNAME -t *.$x |
		sed \
			-e 's/.s-2//g' \
			-e 's/.s-1//g' \
			-e 's/.s0//g' \
			-e 's/.s+1//g' \
			-e 's/  *.-  */: /' \
			-e 's/ *$/./' \
			-e 's/.TH.*	//' \
		> ../man0/tocx$x
	    done
	)
elif [ $# -eq 2 ]
then
	: create toc input file for one section only

	( cd man$1 ; /usr/lib/getNAME -t *.* |
		sed \
			-e 's/.s-2//g' \
			-e 's/.s-1//g' \
			-e 's/.s0//g' \
			-e 's/.s+1//g' \
			-e 's/  *.-  */: /' \
			-e 's/ *$/./' \
			-e 's/.TH.*	//' \
		> ../man0/tocx$1
	)
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/(1g)/(1G)/' \
			-e 's/(3c)/(3C)/' \
			-e 's/(3m)/(3M)/' \
			-e 's/(3s)/(3S)/' \
			-e 's/(3x)/(3X)/' \
			-e 's/(3f)/(3F)/' \
			-e 's/(4f)/(4F)/' \
			-e 's/(4n)/(4N)/' \
			-e 's/(4p)/(4P)/' \
			-e 's/(8c)/(8C)/' \
			-e 's/(8v)/(8V)/' \
			-e '/"\."/d' \
			man0/tocx* man0/cshcmd \
		> /tmp/cattoc

		ptx -r -t -b break -f -w 108 -i man0/ignore \
		    /tmp/cattoc man0/ptxx

		for x in 1 2 3 3f 3m 3n 3s 3x 3c 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
		;;
	tr )
		cd man0; $troff ptx.in ; cd ..
		cd man0 ; $troff toc.in  ; cd ..
		;;
	* )
		./$0 $1 $1
		;;
	esac
fi
exit