1 2b85f70d 2005-01-11 devnull #!/usr/local/plan9/bin/rc
4 5645c4af 2005-01-11 devnull . $PLAN9/man/fonts
7 78e51a8c 2005-01-14 devnull # formatters
10 5645c4af 2005-01-11 devnull preproc=()
11 5645c4af 2005-01-11 devnull x=`{doctype $2}
12 5645c4af 2005-01-11 devnull if (~ $1 t) {
13 5645c4af 2005-01-11 devnull if(~ $x *grap*)
14 5645c4af 2005-01-11 devnull preproc=($preproc grap)
15 5645c4af 2005-01-11 devnull if(~ $x *pic*)
16 5645c4af 2005-01-11 devnull preproc=($preproc pic)
17 5645c4af 2005-01-11 devnull Nflag=-Tutf
22 5645c4af 2005-01-11 devnull if(~ $x *eqn*)
23 5645c4af 2005-01-11 devnull preproc=($preproc eqn)
24 5645c4af 2005-01-11 devnull if(~ $x *tbl*)
25 5645c4af 2005-01-11 devnull preproc=($preproc tbl)
27 5645c4af 2005-01-11 devnull switch($#preproc) {
29 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | troff $Nflag -$MAN
31 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc | troff $Nflag -$MAN
33 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | troff $Nflag -$MAN
35 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | troff $Nflag -$MAN
37 5645c4af 2005-01-11 devnull {echo -n $FONTS; cat $2< /dev/null} | $preproc(1) | $preproc(2) | $preproc(3) | | $preproc(4) | troff $Nflag -$MAN
41 78e51a8c 2005-01-14 devnull fn doecho { echo $1 }
42 78e51a8c 2005-01-14 devnull fn dotroff { roff t $1 }
43 78e51a8c 2005-01-14 devnull fn doproof { roff t $1 | proof }
44 4f52e8af 2011-01-02 rsc fn dopage { roff t $1 | tr2post | page }
45 78e51a8c 2005-01-14 devnull fn donroff {
46 78e51a8c 2005-01-14 devnull roff n $1 | sed '
55 78e51a8c 2005-01-14 devnull fn dohtml {
56 78e51a8c 2005-01-14 devnull MAN=manhtml
57 78e51a8c 2005-01-14 devnull b=`{echo $1 | sed 's/\.[0-9].*//'}
58 78e51a8c 2005-01-14 devnull if(test -f $b.html)
59 78e51a8c 2005-01-14 devnull web $b.html
61 78e51a8c 2005-01-14 devnull roff t $1 | troff2html >/tmp/man.$pid.$seq.html
62 78e51a8c 2005-01-14 devnull web /tmp/man.$pid.$seq.html
63 78e51a8c 2005-01-14 devnull seq=`{echo 1+$seq | hoc}
68 67075c36 2005-01-14 devnull # parse flags and sections
70 2863f80b 2008-07-21 t.lainson fn usage { echo 'Usage: man [-hnpPtw] [-s sec] [0-9] [0-9] ... [--] name1 name2 ...' >[1=2] }
71 78e51a8c 2005-01-14 devnull cmd=donroff
73 78e51a8c 2005-01-14 devnull S=$PLAN9/man
75 5645c4af 2005-01-11 devnull while(~ $d 0) {
76 5645c4af 2005-01-11 devnull if(~ $#* 0) {
80 5645c4af 2005-01-11 devnull if(test -d $S/man$1){
81 5645c4af 2005-01-11 devnull sec=($sec $1)
84 5645c4af 2005-01-11 devnull if not switch($1) {
85 3844a3d9 2005-07-13 devnull case -t ; cmd=dotroff ; shift
86 78e51a8c 2005-01-14 devnull case -n ; cmd=donroff ; shift
87 78e51a8c 2005-01-14 devnull case -p ; cmd=doproof ; shift
88 78e51a8c 2005-01-14 devnull case -P ; cmd=dopage ; shift
89 78e51a8c 2005-01-14 devnull case -w ; cmd=doecho ; shift
90 78e51a8c 2005-01-14 devnull case -h ; cmd=dohtml ; shift
91 78e51a8c 2005-01-14 devnull case -- ; d=1 ; shift
92 2863f80b 2008-07-21 t.lainson case -* ; usage ; exit 1
93 5645c4af 2005-01-11 devnull case * ; d=1
96 5645c4af 2005-01-11 devnull if(~ $#sec 0) {
97 5645c4af 2005-01-11 devnull sec=`{ls -pd $S/man[0-9]* | sed 's/man//'}
101 78e51a8c 2005-01-14 devnull # search index
103 78e51a8c 2005-01-14 devnull allfiles=()
104 78e51a8c 2005-01-14 devnull missing=no
105 78e51a8c 2005-01-14 devnull for(word){
106 78e51a8c 2005-01-14 devnull files=()
107 78e51a8c 2005-01-14 devnull regexp='^'^$word^' '
108 78e51a8c 2005-01-14 devnull for(i in $S/man$sec){
109 78e51a8c 2005-01-14 devnull if(test -f $i/INDEX){
110 78e51a8c 2005-01-14 devnull try=`{grep $regexp $i/INDEX | sed 's/^[^ ]* //'}
111 78e51a8c 2005-01-14 devnull if(! ~ $#try 0)
112 78e51a8c 2005-01-14 devnull files=($files $i/$try)
115 78e51a8c 2005-01-14 devnull if(~ $#files 0){
116 78e51a8c 2005-01-14 devnull for(i in $S/man$sec){
117 78e51a8c 2005-01-14 devnull if(test -f $i/$word.[0-9]*)
118 78e51a8c 2005-01-14 devnull files=($files $i/$word.[0-9]*)
121 78e51a8c 2005-01-14 devnull if(~ $#files 0){
122 78e51a8c 2005-01-14 devnull echo 'man: no manual page' $word >[1=2]
123 78e51a8c 2005-01-14 devnull missing=yes
125 78e51a8c 2005-01-14 devnull allfiles=($allfiles $files)
127 78e51a8c 2005-01-14 devnull if(~ $#allfiles 0)
128 78e51a8c 2005-01-14 devnull exit 'no man'
129 3844a3d9 2005-07-13 devnull # complicated sort order: want 9p.3, 9p-cmdbuf.3, 9pclient.3
130 3844a3d9 2005-07-13 devnull allfiles=`{ls $allfiles | sed 's/[.\-]/ &/g;s/\./ &/g' | sort -u | tr -d ' '}
132 78e51a8c 2005-01-14 devnull files=()
133 78e51a8c 2005-01-14 devnull for(i in $allfiles){
134 78e51a8c 2005-01-14 devnull if(test -f $i)
135 78e51a8c 2005-01-14 devnull files=($files $i)
137 5645c4af 2005-01-11 devnull echo need $i >[1=2]
141 78e51a8c 2005-01-14 devnull # format pages
143 78e51a8c 2005-01-14 devnull for(i in $files)