13e12c5d1SDavid du Colombier#!/bin/rc 2c0a4f1a4SDavid du Colombier# man - print manual pages 37dd7cddfSDavid du Colombierrfork e 47dd7cddfSDavid du Colombier 5219b2ee8SDavid du Colombier. /sys/man/fonts 6219b2ee8SDavid du Colombier 73e12c5d1SDavid du Colombiercmd=n 83e12c5d1SDavid du Colombiersec=() 93e12c5d1SDavid du ColombierS=/sys/man 103e12c5d1SDavid du Colombierd=0 113e12c5d1SDavid du Colombier 123e12c5d1SDavid du Colombierfn roff { 133e12c5d1SDavid du Colombier preproc=() 14c0a4f1a4SDavid du Colombier postproc=cat 159a747e4fSDavid du Colombier x=`{doctype $2} 163e12c5d1SDavid du Colombier if (~ $1 t) { 179a747e4fSDavid du Colombier if(~ $x *grap*) 189a747e4fSDavid du Colombier preproc=($preproc grap) 199a747e4fSDavid du Colombier if(~ $x *pic*) 209a747e4fSDavid du Colombier preproc=($preproc pic) 213e12c5d1SDavid du Colombier Nflag=-Tutf 223e12c5d1SDavid du Colombier } 233e12c5d1SDavid du Colombier if not { 2401a344a2SDavid du Colombier Nflag='-N' 2501a344a2SDavid du Colombier Lflag='-rL1000i' 2601a344a2SDavid du Colombier # setting L changes page length to infinity (sed script removes empty lines) 27*ea005eafSDavid du Colombier if (grep -s '^\.(2C|sp *[0-9]*\.)' $2) 28c0a4f1a4SDavid du Colombier postproc=col 293e12c5d1SDavid du Colombier } 309a747e4fSDavid du Colombier if(~ $x *eqn*) 319a747e4fSDavid du Colombier preproc=($preproc eqn) 329a747e4fSDavid du Colombier if(~ $x *tbl*) 339a747e4fSDavid du Colombier preproc=($preproc tbl) 34c0a4f1a4SDavid du Colombier {echo -n $FONTS; cat $2 </dev/null} | 353e12c5d1SDavid du Colombier switch($#preproc) { 363e12c5d1SDavid du Colombier case 0 3701a344a2SDavid du Colombier troff $Nflag $Lflag -$MAN 383e12c5d1SDavid du Colombier case 1 3901a344a2SDavid du Colombier $preproc | troff $Nflag $Lflag -$MAN 409a747e4fSDavid du Colombier case 2 4101a344a2SDavid du Colombier $preproc(1) | $preproc(2) | troff $Nflag $Lflag -$MAN 429a747e4fSDavid du Colombier case 3 43c0a4f1a4SDavid du Colombier $preproc(1) | $preproc(2) | $preproc(3) | 4401a344a2SDavid du Colombier troff $Nflag $Lflag -$MAN 459a747e4fSDavid du Colombier case * 46c0a4f1a4SDavid du Colombier $preproc(1) | $preproc(2) | $preproc(3) | 4701a344a2SDavid du Colombier $preproc(4) | troff $Nflag $Lflag -$MAN 48c0a4f1a4SDavid du Colombier } | $postproc 493e12c5d1SDavid du Colombier} 503e12c5d1SDavid du Colombier 51d61d6377SDavid du Colombierfn page { 52d61d6377SDavid du Colombier if(test -d /mnt/wsys/acme) 53d61d6377SDavid du Colombier /bin/page -w 54d61d6377SDavid du Colombier if not 55d61d6377SDavid du Colombier /bin/page 56d61d6377SDavid du Colombier} 57d61d6377SDavid du Colombier 58d61d6377SDavid du Colombier 598f856f24SDavid du Colombiersearch=yes 603e12c5d1SDavid du Colombierwhile(~ $d 0) { 613e12c5d1SDavid du Colombier if(~ $#* 0) { 628f856f24SDavid du Colombier echo 'Usage: man [-bntpPSw] [0-9] [0-9] ... name1 name2 ...' >[1=2] 633e12c5d1SDavid du Colombier exit 643e12c5d1SDavid du Colombier } 655d459b5aSDavid du Colombier if(test -d $S/$1){ 665d459b5aSDavid du Colombier sec=($sec $1) 675d459b5aSDavid du Colombier shift 685d459b5aSDavid du Colombier } 69c0a4f1a4SDavid du Colombier if not 70c0a4f1a4SDavid du Colombier switch($1) { 718f856f24SDavid du Colombier case -b ; cmd=b ; shift 72225077b0SDavid du Colombier case -n ; cmd=n ; shift 73225077b0SDavid du Colombier case -P ; cmd=P ; shift 74225077b0SDavid du Colombier case -p ; cmd=p ; shift 758f856f24SDavid du Colombier case -S ; search=no ; shift 76225077b0SDavid du Colombier case -t ; cmd=t ; shift 77225077b0SDavid du Colombier case -w ; cmd=w ; shift 783e12c5d1SDavid du Colombier case * ; d=1 793e12c5d1SDavid du Colombier } 803e12c5d1SDavid du Colombier} 813e12c5d1SDavid du Colombierif(~ $#sec 0) { 82219b2ee8SDavid du Colombier sec=`{ls -pd $S/[0-9]* } 833e12c5d1SDavid du Colombier} 843e12c5d1SDavid du Colombierix=$S/$sec/INDEX 853e12c5d1SDavid du Colombierif(~ $#* 1) pat='^'^$1^' ' 863e12c5d1SDavid du Colombierif not pat='^('^`{echo $* | sed 's/ /|/g'}^') ' 873e12c5d1SDavid du Colombierfils=() 888f856f24SDavid du Colombierif(~ $search yes) 893e12c5d1SDavid du Colombierfor(i in $S/$sec){ 903e12c5d1SDavid du Colombier if(/bin/test -f $i/INDEX){ 916b0d5c8bSDavid du Colombier try=`{grep -i $pat $i/INDEX | sed 's/^[^ ]* //' | sort -u} 923e12c5d1SDavid du Colombier if(! ~ $#try 0) 933e12c5d1SDavid du Colombier fils=($fils $i/$try) 943e12c5d1SDavid du Colombier } 953e12c5d1SDavid du Colombier} 963e12c5d1SDavid du Colombier# bug: should also do following loop if not all pages found 973e12c5d1SDavid du Colombierif(~ $#fils 0) { 98219b2ee8SDavid du Colombier # nothing in INDEX. try for file of given name 993e12c5d1SDavid du Colombier for(i) { 1008f856f24SDavid du Colombier if(~ $i intro) i=0intro 1013e12c5d1SDavid du Colombier for(n in $sec) { 1028f856f24SDavid du Colombier try=`{echo $S/$n/$i | tr A-Z a-z} 1033e12c5d1SDavid du Colombier if (/bin/test -f $try) 1043e12c5d1SDavid du Colombier fils=($fils $try) 1053e12c5d1SDavid du Colombier } 1063e12c5d1SDavid du Colombier } 1073e12c5d1SDavid du Colombier if(~ $#fils 0) { 1083e12c5d1SDavid du Colombier echo 'man: no manual page' >[1=2] 1099a747e4fSDavid du Colombier exit 'no man' 1103e12c5d1SDavid du Colombier } 1113e12c5d1SDavid du Colombier} 1123e12c5d1SDavid du Colombierfor(i in $fils) { 1133e12c5d1SDavid du Colombier if(! /bin/test -f $i) 1143e12c5d1SDavid du Colombier echo need $i >[1=2] 1153e12c5d1SDavid du Colombier if not { 1163e12c5d1SDavid du Colombier switch($cmd) { 1178f856f24SDavid du Colombier case w 1188f856f24SDavid du Colombier echo $i 1198f856f24SDavid du Colombier 1203e12c5d1SDavid du Colombier case t 1213e12c5d1SDavid du Colombier roff t $i 1223e12c5d1SDavid du Colombier 1233e12c5d1SDavid du Colombier case p 124208510e1SDavid du Colombier roff t $i | grep -v '^x X html' | proof 1253e12c5d1SDavid du Colombier 1267dd7cddfSDavid du Colombier case P 1277dd7cddfSDavid du Colombier roff t $i | page 1287dd7cddfSDavid du Colombier 1293e12c5d1SDavid du Colombier case n 13014414594SDavid du Colombier roff n $i | sed ' 13114414594SDavid du Colombier ${ 13214414594SDavid du Colombier /^$/p 13314414594SDavid du Colombier } 13414414594SDavid du Colombier //N 13514414594SDavid du Colombier /^\n$/D' 1368f856f24SDavid du Colombier 1378f856f24SDavid du Colombier case b 1388f856f24SDavid du Colombier x=`{echo $i | sed 's;/sys/man/(.*)/(.*);\1 \2;'} 1398f856f24SDavid du Colombier if(~ $x(2) 0intro) x=($x(1) intro) 1408f856f24SDavid du Colombier roff n $i | sed ' 1418f856f24SDavid du Colombier ${ 1428f856f24SDavid du Colombier /^$/p 1438f856f24SDavid du Colombier } 1448f856f24SDavid du Colombier //N 1458f856f24SDavid du Colombier /^\n$/D' | 1468f856f24SDavid du Colombier plumb -i -d edit -a 'action=showdata filename=/man/'$x(2)^'('$x(1)^')' 1473e12c5d1SDavid du Colombier } 1483e12c5d1SDavid du Colombier } 1493e12c5d1SDavid du Colombier} 150