Merge from vendor branch DIFFUTILS:
[dragonfly.git] / share / man / tools / cknames
1 #! /bin/sh
2 set x $*
3 . ./.param
4
5 trap "rm -f $TMPDIR/*$$; exit;" 2
6
7 for sec in $DIRLST
8 do
9         /bin/ls $MANDIR/man$sec > $TMPDIR/man${sec}$$
10 done
11
12 for sec in $DIRLST
13 do
14         cd $MANDIR/man$sec
15         dt=`date`
16         echo "$dt\n" > $TMPDIR/not.one.line$sec
17         echo "$dt\n" > $TMPDIR/name.order$sec
18         echo "$dt\n" > $TMPDIR/file.match$sec
19         echo "$dt\n" > $TMPDIR/no.TH$sec
20         echo "$dt\n" > $TMPDIR/no.NAME$sec
21         while read file
22         do
23                 so=`line < $file | sed "s/ .*$//"`
24                 if test "$so" = ".so"
25                 then
26                         continue
27                 fi
28                 grep "^.SH NAME" $file > /dev/null
29                 if test $? -eq 1
30                 then
31                         echo $file >> $TMPDIR/no.NAME$sec
32                         continue
33                 fi
34                 grep "^.SH SYNOPSIS" $file > /dev/null
35                 if test $? -eq 0
36                 then
37                         lines=`cat $file | sed -n "/\.SH NAME/,/\.SH SYNOP/p" | wc -l | sed "s/ //g"`
38                 else
39                         lines=`cat $file | sed -n "/\.SH NAME/,/\.SH DESCR/p" | wc -l | sed "s/ //g"`
40                 fi
41                 if test $lines -gt 3
42                 then
43                         echo $file >> $TMPDIR/not.one.line$sec
44                         continue
45                 fi
46                 th=`grep "^.TH" $file | line`
47                 if test -z "$th"
48                 then
49                         echo $file >> $TMPDIR/no.TH$sec
50                         continue
51                 fi
52                 set $th
53                 name=`echo $2 | tr [A-Z] [a-z]`
54                 suf=`echo $3 | tr [A-Z] [a-z]`
55                 fname="${name}.$suf"
56                 if test $fname != $file
57                 then
58                         echo $file >> $TMPDIR/file.match$sec
59                 fi
60                 ed - $file > $TMPDIR/tmp.$$ <<!
61                         /^.SH NAME/+p
62                         q
63 !
64                 nname=`cat $TMPDIR/tmp.$$ | sed -e "s/ .*//" -e "s/,.*//"`
65                 rm -f $TMPDIR/tmp.$$
66                 if test $name != $nname
67                 then
68                         echo $file >> $TMPDIR/name.order$sec
69                 fi
70         done < $TMPDIR/man${sec}$$
71 done
72
73 rm -f $TMPDIR/*$$