V10/man/adm/maketopic

mkdir tjunk 2>/dev/null
cd tjunk
rm [12]* 2>/dev/null
for i in /usr/man/man[1-9]/*
do
	awk '
/^\.TH/	{
	page = $2 "(" $3 ")"
	}
/^\.CT/	{
	page = FILENAME
	sub(/.*\//,"",page)
	n=gsub(/\./,"(",page)
	if(n>1)
		for(i=1;i<n;i++)
			sub(/\(/,".",page)
	sub(/$/,")",page)
	section = $2
	for(i=3;i<=NF;i++){
		if(length($i) >10)sname[substr($i,1,10)]
		else sname[$i] = 1
	}
	}
/^\.SH NAME/	{
	while(getline && $0 !~ /^\./)
		name = name $0
	for(i in sname)
		print name "	" page  >>( section "." i)
	exit
}' $i
done
for i in 1* 2*
do
	sort $i >s$i
	awk "
BEGIN	{FS = \"	\" }
	{
	st = \"\"
	if(length(\$1) > 107){
		n=split(\$1, arr, \"\\\\\")
		print \".ne 2\"
		if(length(arr[1]) > 100){
			m=split(arr[1], l, \",\")
			for(i=1;i<m;i++){
				st = st l[i] \",\"
				if(length(st) >= 90){
				print st \"	\" \$2
				st = \"\"
				}
			}
			st = st l[m]
			print \".ti .5i\"
			if(length(st)+length(arr[2])>=90){
				print st
				print \".ti .5i\"
				print \" \\\\\" arr[2]
			}
			else print st \" \\\\\" arr[2]
			next
		}
		if(length(arr[2]) > 100){
			m=split(arr[2],l,\",\")
			st = arr[1] \" \\\\\"
			for(i=1;i<m;i++){
				st = st l[i] \",\"
				if(length(st) >= 90){
				if(flag==0)print st \"	\" \$2
				else print st
				flag=1
				print \".ti .5i\"
				st = \"\"
				}
			}
			st = st l[m]
			print st
			next
		}
		print arr[1] \"	\" \$2
		print \".ti .5i\"
		print \"\\\\\" arr[2]
		next
	}
	print \$0
	}
" s$i >$i
done
awk "
BEGIN	{ FS = \"	\" }
{
	if(\$1 ~ /[0-9]/){
		section = \$1
		print \".yy \\\"\" \$2 \"\\\"\"
		next
	}
	if(\$1 == \"\")next
	print \".xx \\\"\" \$2 \"\\\"\"
	if(length(\$1 > 10))
		name = substr(\$1,1,10)
	else name = \$1
	system(\"cat \" section \".\" name)
}" /usr/man/adm/categories >topindex
exit
#rm 1* 2* s[12]* x[12]*
mv topindex ..
cd ..
rmdir tjunk