Blame


1 2b85f70d 2005-01-11 devnull #!/usr/local/plan9/bin/rc
2 5645c4af 2005-01-11 devnull
3 5645c4af 2005-01-11 devnull . $PLAN9/man/fonts
4 5645c4af 2005-01-11 devnull
5 78e51a8c 2005-01-14 devnull #
6 78e51a8c 2005-01-14 devnull # formatters
7 78e51a8c 2005-01-14 devnull #
8 5645c4af 2005-01-11 devnull fn roff {
9 5645c4af 2005-01-11 devnull preproc=()
10 5645c4af 2005-01-11 devnull x=`{doctype $2}
11 5645c4af 2005-01-11 devnull if (~ $1 t) {
12 5645c4af 2005-01-11 devnull if(~ $x *grap*)
13 5645c4af 2005-01-11 devnull preproc=($preproc grap)
14 5645c4af 2005-01-11 devnull if(~ $x *pic*)
15 5645c4af 2005-01-11 devnull preproc=($preproc pic)
16 5645c4af 2005-01-11 devnull Nflag=-Tutf
17 5645c4af 2005-01-11 devnull }
18 5645c4af 2005-01-11 devnull if not {
19 5645c4af 2005-01-11 devnull Nflag=-N
20 5645c4af 2005-01-11 devnull }
21 5645c4af 2005-01-11 devnull if(~ $x *eqn*)
22 5645c4af 2005-01-11 devnull preproc=($preproc eqn)
23 5645c4af 2005-01-11 devnull if(~ $x *tbl*)
24 5645c4af 2005-01-11 devnull preproc=($preproc tbl)
25 5645c4af 2005-01-11 devnull switch($#preproc) {
26 5645c4af 2005-01-11 devnull case 0
27 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | troff $Nflag -$MAN
28 5645c4af 2005-01-11 devnull case 1
29 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc | troff $Nflag -$MAN
30 5645c4af 2005-01-11 devnull case 2
31 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | troff $Nflag -$MAN
32 5645c4af 2005-01-11 devnull case 3
33 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | troff $Nflag -$MAN
34 5645c4af 2005-01-11 devnull case *
35 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | $preproc(4) | troff $Nflag -$MAN
36 5645c4af 2005-01-11 devnull }
37 5645c4af 2005-01-11 devnull }
38 5645c4af 2005-01-11 devnull
39 78e51a8c 2005-01-14 devnull fn doecho { echo $1 }
40 78e51a8c 2005-01-14 devnull fn dotroff { roff t $1 }
41 78e51a8c 2005-01-14 devnull fn doproof { roff t $1 | proof }
42 78e51a8c 2005-01-14 devnull fn dopage { roff t $1 | page }
43 78e51a8c 2005-01-14 devnull fn donroff {
44 78e51a8c 2005-01-14 devnull roff n $1 | sed '
45 78e51a8c 2005-01-14 devnull ${
46 78e51a8c 2005-01-14 devnull /^$/p
47 78e51a8c 2005-01-14 devnull }
48 78e51a8c 2005-01-14 devnull //N
49 78e51a8c 2005-01-14 devnull /^\n$/D
50 78e51a8c 2005-01-14 devnull '
51 78e51a8c 2005-01-14 devnull }
52 78e51a8c 2005-01-14 devnull seq=0
53 78e51a8c 2005-01-14 devnull fn dohtml {
54 78e51a8c 2005-01-14 devnull MAN=manhtml
55 78e51a8c 2005-01-14 devnull b=`{echo $1 | sed 's/\.[0-9].*//'}
56 78e51a8c 2005-01-14 devnull if(test -f $b.html)
57 78e51a8c 2005-01-14 devnull web $b.html
58 78e51a8c 2005-01-14 devnull if not{
59 78e51a8c 2005-01-14 devnull roff t $1 | troff2html >/tmp/man.$pid.$seq.html
60 78e51a8c 2005-01-14 devnull web /tmp/man.$pid.$seq.html
61 78e51a8c 2005-01-14 devnull seq=`{echo 1+$seq | hoc}
62 78e51a8c 2005-01-14 devnull }
63 78e51a8c 2005-01-14 devnull }
64 78e51a8c 2005-01-14 devnull
65 78e51a8c 2005-01-14 devnull
66 78e51a8c 2005-01-14 devnull #
67 78e51a8c 2005-01-14 devnull # setup
68 78e51a8c 2005-01-14 devnull #
69 78e51a8c 2005-01-14 devnull if(! ~ $path(1) $PLAN9/bin)
70 78e51a8c 2005-01-14 devnull path=($PLAN9/bin $path)
71 78e51a8c 2005-01-14 devnull cmd=donroff
72 78e51a8c 2005-01-14 devnull sec=()
73 78e51a8c 2005-01-14 devnull S=$PLAN9/man
74 78e51a8c 2005-01-14 devnull
75 78e51a8c 2005-01-14 devnull #
76 78e51a8c 2005-01-14 devnull # parse flags and sections
77 78e51a8c 2005-01-14 devnull #
78 78e51a8c 2005-01-14 devnull d=0
79 5645c4af 2005-01-11 devnull while(~ $d 0) {
80 5645c4af 2005-01-11 devnull if(~ $#* 0) {
81 5645c4af 2005-01-11 devnull echo 'Usage: man [-ntp] [-s sec] [0-9] [0-9] ... name1 name2 ...' >[1=2]
82 5645c4af 2005-01-11 devnull exit
83 5645c4af 2005-01-11 devnull }
84 5645c4af 2005-01-11 devnull if(test -d $S/man$1){
85 5645c4af 2005-01-11 devnull sec=($sec $1)
86 5645c4af 2005-01-11 devnull shift
87 5645c4af 2005-01-11 devnull }
88 5645c4af 2005-01-11 devnull if not switch($1) {
89 78e51a8c 2005-01-14 devnull case -t ; fmt=dotroff ; shift
90 78e51a8c 2005-01-14 devnull case -n ; cmd=donroff ; shift
91 78e51a8c 2005-01-14 devnull case -p ; cmd=doproof ; shift
92 78e51a8c 2005-01-14 devnull case -P ; cmd=dopage ; shift
93 78e51a8c 2005-01-14 devnull case -w ; cmd=doecho ; shift
94 78e51a8c 2005-01-14 devnull case -h ; cmd=dohtml ; shift
95 78e51a8c 2005-01-14 devnull case -- ; d=1 ; shift
96 5645c4af 2005-01-11 devnull case * ; d=1
97 5645c4af 2005-01-11 devnull }
98 5645c4af 2005-01-11 devnull }
99 5645c4af 2005-01-11 devnull if(~ $#sec 0) {
100 5645c4af 2005-01-11 devnull sec=`{ls -pd $S/man[0-9]* | sed 's/man//'}
101 5645c4af 2005-01-11 devnull }
102 78e51a8c 2005-01-14 devnull
103 78e51a8c 2005-01-14 devnull #
104 78e51a8c 2005-01-14 devnull # search index
105 78e51a8c 2005-01-14 devnull #
106 78e51a8c 2005-01-14 devnull allfiles=()
107 78e51a8c 2005-01-14 devnull missing=no
108 78e51a8c 2005-01-14 devnull for(word){
109 78e51a8c 2005-01-14 devnull files=()
110 78e51a8c 2005-01-14 devnull regexp='^'^$word^' '
111 78e51a8c 2005-01-14 devnull for(i in $S/man$sec){
112 78e51a8c 2005-01-14 devnull if(test -f $i/INDEX){
113 78e51a8c 2005-01-14 devnull try=`{grep $regexp $i/INDEX | sed 's/^[^ ]* //'}
114 78e51a8c 2005-01-14 devnull if(! ~ $#try 0)
115 78e51a8c 2005-01-14 devnull files=($files $i/$try)
116 78e51a8c 2005-01-14 devnull }
117 5645c4af 2005-01-11 devnull }
118 78e51a8c 2005-01-14 devnull if(~ $#files 0){
119 78e51a8c 2005-01-14 devnull for(i in $S/man$sec){
120 78e51a8c 2005-01-14 devnull if(test -f $i/$word.[0-9]*)
121 78e51a8c 2005-01-14 devnull files=($files $i/$word.[0-9]*)
122 5645c4af 2005-01-11 devnull }
123 5645c4af 2005-01-11 devnull }
124 78e51a8c 2005-01-14 devnull if(~ $#files 0){
125 78e51a8c 2005-01-14 devnull echo 'man: no manual page' $word >[1=2]
126 78e51a8c 2005-01-14 devnull missing=yes
127 5645c4af 2005-01-11 devnull }
128 78e51a8c 2005-01-14 devnull allfiles=($allfiles $files)
129 5645c4af 2005-01-11 devnull }
130 78e51a8c 2005-01-14 devnull if(~ $#allfiles 0)
131 78e51a8c 2005-01-14 devnull exit 'no man'
132 78e51a8c 2005-01-14 devnull allfiles=`{ls $allfiles | sort -u >[2]/dev/null}
133 78e51a8c 2005-01-14 devnull
134 78e51a8c 2005-01-14 devnull files=()
135 78e51a8c 2005-01-14 devnull for(i in $allfiles){
136 78e51a8c 2005-01-14 devnull if(test -f $i)
137 78e51a8c 2005-01-14 devnull files=($files $i)
138 78e51a8c 2005-01-14 devnull if not
139 5645c4af 2005-01-11 devnull echo need $i >[1=2]
140 78e51a8c 2005-01-14 devnull }
141 5645c4af 2005-01-11 devnull
142 78e51a8c 2005-01-14 devnull #
143 78e51a8c 2005-01-14 devnull # format pages
144 78e51a8c 2005-01-14 devnull #
145 78e51a8c 2005-01-14 devnull for(i in $files)
146 78e51a8c 2005-01-14 devnull $cmd $i
147 5645c4af 2005-01-11 devnull