123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #!/dis/sh.dis
- # Plan 9 man script adaptation for Inferno
- # for more details see the real man(1)
- load std
- fils=()
- cmd=n
- sec=()
- S=/man
- d=0
- x=$* # see sh(1) for details about s/$*/$x/.
- x=`{echo $x|tr A-Z a-z|tr -dc 'a-z0-9_ \012-/'} # fold case, delete funny chars
- search=yes
- while {~ $d 0}{
- #echo d$d search$search cmd$cmd fils$fils: $"x
- if {no $x}{
- echo 'Usage: man [-bnSwpf] [0-9] [0-9] ... name1 name2 ...'
- exit
- }
- if{ftest -d $S/${hd $x}}{
- sec=($sec ${hd $x}); x=${tl $x};
- }{
- if{~ ${hd $x} '-n'}{
- cmd=n; x=${tl $x};
- }{~ ${hd $x} '-w'}{
- cmd=w; x=${tl $x};
- }{~ ${hd $x} '-b'}{
- cmd=b; x=${tl $x};
- }{~ ${hd $x} '-p'}{
- cmd=p; x=${tl $x};
- }{~ ${hd $x} '-s'}{
- search=no; x=${tl $x};
- }{~ ${hd $x} '-f'}{
- search=no; x=${tl $x};
- if {ftest -f ${hd $x}}{
- fils=(${hd $x});
- }{
- echo 'man: bad option -f '${hd $x}
- exit 'no file'
- }
- }{
- d=1;
- }
-
- if{no $x}{
- d=1;
- }
- }
- }
- if{no $sec} {
- sec=`{ls -pd $S/[0-9]* }
- }
- ix=$S/$sec/INDEX
- if{~ $#x 1} {pat='^'^$x^' '}
- {pat='^('^`{echo $x | sed 's/ /|/g'}^') '}
- if{~ $search yes} {
- for i in $S/$sec {
- if {ftest -f $i/INDEX}{
- try=`{grep -i $pat $i/INDEX | sed 's/^[^ ]*//'}
- if {! no $try}{
- fils=($fils $i/$try)
- }
- }
- }
- }
- if{no $fils} {
- # nothing in INDEX. try for file or given name
- for i in $x {
- if{~ $i intro} {i=0intro}
- for n in $sec {
- try=`{echo $S/$n/$i | tr A-Z a-z}
- if {ftest -f $try} {
- fils=($fils $try)
- }
- }
- }
- if{~ $#fils 0} {
- echo 'man: no manual page'
- exit 'no man'
- }
- }
- for i in $fils {
- if {! ftest -f $i}{
- echo need:$i
- }{
- if {~ $cmd n}{
- man2txt $i
- }{~ $cmd w}{
- echo $i
- }{~ $cmd p}{
- wm/man -f $i
- }{~ $cmd b}{
- if{~ $i '/man/*/0intro'}{
- x=`{echo $i | sed 's;/man/(.*)/.*;\1 intro;'}
- }{~ $i '/man/*/*'}{
- x=`{echo $i | sed 's;/man/(.*)/(.*);\1 \2;'}
- }{
- x=($i '')
- }
- man2txt $i |
- plumb -i -d edit -a action showdata -a filename '/man/'^${tl $x}^'('^${hd $x}^')'
- }
- }
-
- }
|