xref: /netbsd-src/share/man/tools/tocrc (revision a50e92ee94fef5ef9c87e87efc192c0a3f75f06e)
1*a50e92eeSmrgMANDIR=/usr/man
2*a50e92eeSmrgTMPDIR=/usr/man/tmp
3*a50e92eeSmrgTOOLS=$MANDIR/tools
4*a50e92eeSmrg
5*a50e92eeSmrgtrap "rm $TMPDIR/tmp.$$ ; exit" 2 3 15
6*a50e92eeSmrg
7*a50e92eeSmrgP=108
8*a50e92eeSmrgp=""
9*a50e92eeSmrgif test "$1" = "-p"
10*a50e92eeSmrgthen
11*a50e92eeSmrg	P=65
12*a50e92eeSmrg	p=-p
13*a50e92eeSmrg	shift
14*a50e92eeSmrgfi
15*a50e92eeSmrg
16*a50e92eeSmrgif test $# -eq 0
17*a50e92eeSmrgthen
18*a50e92eeSmrg	echo "tocrc: no argument"
19*a50e92eeSmrg	exit
20*a50e92eeSmrgfi
21*a50e92eeSmrg
22*a50e92eeSmrgif test $# -eq 2
23*a50e92eeSmrgthen
24*a50e92eeSmrg	: create toc input file for one section only
25*a50e92eeSmrg
26*a50e92eeSmrg	> $TMPDIR/tocx$1
27*a50e92eeSmrg	for file in $MANDIR/man$1/*.$1*
28*a50e92eeSmrg	do
29*a50e92eeSmrg		if test ! -s $file
30*a50e92eeSmrg		then
31*a50e92eeSmrg			continue
32*a50e92eeSmrg		fi
33*a50e92eeSmrg		so=`line < $file | sed "s/ .*//"`
34*a50e92eeSmrg		if test "$so" = ".so"
35*a50e92eeSmrg		then
36*a50e92eeSmrg			continue
37*a50e92eeSmrg		fi
38*a50e92eeSmrg		ed - $file > $TMPDIR/tmp.$$ <<!
39*a50e92eeSmrg			H
40*a50e92eeSmrg			/^\.TH/p
41*a50e92eeSmrg			q
42*a50e92eeSmrg!
43*a50e92eeSmrg		loc=`cat $TMPDIR/tmp.$$ | sed "s/.*local.*/local/"`
44*a50e92eeSmrg		if test "$loc" = "local"
45*a50e92eeSmrg		then
46*a50e92eeSmrg			continue
47*a50e92eeSmrg		fi
48*a50e92eeSmrg		name=`basename $file`
49*a50e92eeSmrg		name=`echo $name | sed "s/\.\(.\{1,2\}\)\$/(\1)/"`
50*a50e92eeSmrg		ed - $file > $TMPDIR/tmp.$$ <<!
51*a50e92eeSmrg			/^.SH NAME/+p
52*a50e92eeSmrg			q
53*a50e92eeSmrg!
54*a50e92eeSmrg		desc=`line < $TMPDIR/tmp.$$`
55*a50e92eeSmrg		desc=`echo $desc | sed -e "s/.s-1//g" -e "s/.s0//g"  -e "s/.s+1//g"   -e "s/ .- /: /"  -e "s/^/$name /"  -e "s/$/./"`
56*a50e92eeSmrg		if test -n "$desc"
57*a50e92eeSmrg		then
58*a50e92eeSmrg			echo $desc >> $TMPDIR/tocx$1
59*a50e92eeSmrg		fi
60*a50e92eeSmrg		rm -f $TMPDIR/tmp.$$
61*a50e92eeSmrg	done
62*a50e92eeSmrgelse case $1 in
63*a50e92eeSmrg	all )
64*a50e92eeSmrg		:   tocx files for all sections and everything else
65*a50e92eeSmrg
66*a50e92eeSmrg		for x in 1 2 3 4 5 6 7 8
67*a50e92eeSmrg		do
68*a50e92eeSmrg			$0 $p $x $x
69*a50e92eeSmrg		done
70*a50e92eeSmrg		$0 $p t
71*a50e92eeSmrg		;;
72*a50e92eeSmrg	t )
73*a50e92eeSmrg		:   permuted index and toc files
74*a50e92eeSmrg
75*a50e92eeSmrg		if test ! -f $TMPDIR/tocx1
76*a50e92eeSmrg		then
77*a50e92eeSmrg			echo "tocrc: some tocx? files missing"
78*a50e92eeSmrg			exit
79*a50e92eeSmrg		fi
80*a50e92eeSmrg		cat $TMPDIR/tocx? > $TMPDIR/cattoc
81*a50e92eeSmrg		ed - $TMPDIR/cattoc <<!
82*a50e92eeSmrg			H
83*a50e92eeSmrg			g/(1c)/s//(1C)/
84*a50e92eeSmrg			g/(1m)/s//(1M)/
85*a50e92eeSmrg			g/(1g)/s//(1G)/
86*a50e92eeSmrg			g/(3c)/s//(3C)/
87*a50e92eeSmrg			g/(3m)/s//(3M)/
88*a50e92eeSmrg			g/(3s)/s//(3S)/
89*a50e92eeSmrg			g/(3x)/s//(3X)/
90*a50e92eeSmrg			g/"\."/d
91*a50e92eeSmrg			w
92*a50e92eeSmrg			q
93*a50e92eeSmrg!
94*a50e92eeSmrg		ptx -r -t -b $TOOLS/break -f -w $P -i $TOOLS/ignore $TMPDIR/cattoc $MANDIR/man0/ptxx
95*a50e92eeSmrg		for x in 1 2 3 4 5 6 7 8
96*a50e92eeSmrg		do
97*a50e92eeSmrg			ed - $TMPDIR/tocx$x << !
98*a50e92eeSmrg			H
99*a50e92eeSmrg				/^intro/m0
100*a50e92eeSmrg				1,\$s/ .*://
101*a50e92eeSmrg				1,\$s/.$//
102*a50e92eeSmrg				1,\$s/([1-8][a-z]\{0,1\}) /" "/
103*a50e92eeSmrg				1,\$s/.*/.xx "&"/
104*a50e92eeSmrg				g/""/d
105*a50e92eeSmrg				w $MANDIR/man0/toc$x
106*a50e92eeSmrg				q
107*a50e92eeSmrg!
108*a50e92eeSmrg		done
109*a50e92eeSmrg		;;
110*a50e92eeSmrg	* )
111*a50e92eeSmrg		$0 $p $1 $1
112*a50e92eeSmrg		;;
113*a50e92eeSmrg	esac
114*a50e92eeSmrgfi
115