#!/dis/sh.dis # Plan 9 man script adaptation for Inferno # for more details see man(1) 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 ${hd $x}: $"x if {no $x}{ echo 'Usage: man [-bnSw] [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} '-S'}{ search=no; x=${tl $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'}^') '} fils=() 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 b}{ x=`{echo $i | sed 's;/man/(.*)/(.*);\1 \2;'} if{~ ${index 2 $x} 0intro}{ x=(${index 1 $x} intro) } man2txt $i | plumb -i -d edit -a action showdata -a filename '/man/'^${index 2 $x}^'('^${index 1 $x}^')' } } }