18911721eSCharles.Forsyth#!/dis/sh.dis 28911721eSCharles.Forsyth# Plan 9 man script adaptation for Inferno 38911721eSCharles.Forsyth# for more details see the real man(1) 48911721eSCharles.Forsythload std 58911721eSCharles.Forsyth 6d512a949SCharles.Forsythfils=() 78911721eSCharles.Forsythcmd=n 88911721eSCharles.Forsythsec=() 98911721eSCharles.ForsythS=/man 108911721eSCharles.Forsythd=0 118911721eSCharles.Forsyth 128911721eSCharles.Forsythx=$* # see sh(1) for details about s/$*/$x/. 138911721eSCharles.Forsythx=`{echo $x|tr A-Z a-z|tr -dc 'a-z0-9_ \012-/'} # fold case, delete funny chars 148911721eSCharles.Forsyth 158911721eSCharles.Forsythsearch=yes 168911721eSCharles.Forsythwhile {~ $d 0}{ 178911721eSCharles.Forsyth #echo d$d search$search cmd$cmd fils$fils: $"x 188911721eSCharles.Forsyth if {no $x}{ 198911721eSCharles.Forsyth echo 'Usage: man [-bnSwpf] [0-9] [0-9] ... name1 name2 ...' 208911721eSCharles.Forsyth exit 218911721eSCharles.Forsyth } 228911721eSCharles.Forsyth if{ftest -d $S/${hd $x}}{ 238911721eSCharles.Forsyth sec=($sec ${hd $x}); x=${tl $x}; 248911721eSCharles.Forsyth }{ 258911721eSCharles.Forsyth if{~ ${hd $x} '-n'}{ 268911721eSCharles.Forsyth cmd=n; x=${tl $x}; 278911721eSCharles.Forsyth }{~ ${hd $x} '-w'}{ 288911721eSCharles.Forsyth cmd=w; x=${tl $x}; 298911721eSCharles.Forsyth }{~ ${hd $x} '-b'}{ 308911721eSCharles.Forsyth cmd=b; x=${tl $x}; 318911721eSCharles.Forsyth }{~ ${hd $x} '-p'}{ 328911721eSCharles.Forsyth cmd=p; x=${tl $x}; 338911721eSCharles.Forsyth }{~ ${hd $x} '-s'}{ 348911721eSCharles.Forsyth search=no; x=${tl $x}; 358911721eSCharles.Forsyth }{~ ${hd $x} '-f'}{ 368911721eSCharles.Forsyth search=no; x=${tl $x}; 378911721eSCharles.Forsyth if {ftest -f ${hd $x}}{ 388911721eSCharles.Forsyth fils=(${hd $x}); 398911721eSCharles.Forsyth }{ 408911721eSCharles.Forsyth echo 'man: bad option -f '${hd $x} 418911721eSCharles.Forsyth exit 'no file' 428911721eSCharles.Forsyth } 438911721eSCharles.Forsyth }{ 448911721eSCharles.Forsyth d=1; 458911721eSCharles.Forsyth } 468911721eSCharles.Forsyth 478911721eSCharles.Forsyth if{no $x}{ 488911721eSCharles.Forsyth d=1; 498911721eSCharles.Forsyth } 508911721eSCharles.Forsyth } 518911721eSCharles.Forsyth} 528911721eSCharles.Forsythif{no $sec} { 538911721eSCharles.Forsyth sec=`{ls -pd $S/[0-9]* } 548911721eSCharles.Forsyth} 558911721eSCharles.Forsyth 568911721eSCharles.Forsythix=$S/$sec/INDEX 578911721eSCharles.Forsythif{~ $#x 1} {pat='^'^$x^' '} 588911721eSCharles.Forsyth{pat='^('^`{echo $x | sed 's/ /|/g'}^') '} 598911721eSCharles.Forsyth 608911721eSCharles.Forsythif{~ $search yes} { 618911721eSCharles.Forsyth for i in $S/$sec { 628911721eSCharles.Forsyth if {ftest -f $i/INDEX}{ 638911721eSCharles.Forsyth try=`{grep -i $pat $i/INDEX | sed 's/^[^ ]*//'} 648911721eSCharles.Forsyth if {! no $try}{ 658911721eSCharles.Forsyth fils=($fils $i/$try) 668911721eSCharles.Forsyth } 678911721eSCharles.Forsyth } 688911721eSCharles.Forsyth } 698911721eSCharles.Forsyth} 708911721eSCharles.Forsyth 718911721eSCharles.Forsythif{no $fils} { 728911721eSCharles.Forsyth # nothing in INDEX. try for file or given name 738911721eSCharles.Forsyth for i in $x { 748911721eSCharles.Forsyth if{~ $i intro} {i=0intro} 758911721eSCharles.Forsyth for n in $sec { 768911721eSCharles.Forsyth try=`{echo $S/$n/$i | tr A-Z a-z} 778911721eSCharles.Forsyth if {ftest -f $try} { 788911721eSCharles.Forsyth fils=($fils $try) 798911721eSCharles.Forsyth } 808911721eSCharles.Forsyth } 818911721eSCharles.Forsyth } 828911721eSCharles.Forsyth if{~ $#fils 0} { 838911721eSCharles.Forsyth echo 'man: no manual page' 848911721eSCharles.Forsyth exit 'no man' 858911721eSCharles.Forsyth } 868911721eSCharles.Forsyth} 878911721eSCharles.Forsyth 888911721eSCharles.Forsythfor i in $fils { 89d512a949SCharles.Forsyth if {! ftest -f $i}{ 908911721eSCharles.Forsyth echo need:$i 918911721eSCharles.Forsyth }{ 928911721eSCharles.Forsyth if {~ $cmd n}{ 938911721eSCharles.Forsyth man2txt $i 948911721eSCharles.Forsyth }{~ $cmd w}{ 958911721eSCharles.Forsyth echo $i 968911721eSCharles.Forsyth }{~ $cmd p}{ 978911721eSCharles.Forsyth wm/man -f $i 988911721eSCharles.Forsyth }{~ $cmd b}{ 99d512a949SCharles.Forsyth if{~ $i '/man/*/0intro'}{ 100*492f69dcSCharles.Forsyth x=`{echo $i | sed 's;/man/(.*)/.*;\1 intro;'} 101d512a949SCharles.Forsyth }{~ $i '/man/*/*'}{ 1028911721eSCharles.Forsyth x=`{echo $i | sed 's;/man/(.*)/(.*);\1 \2;'} 103d512a949SCharles.Forsyth }{ 104d512a949SCharles.Forsyth x=($i '') 1058911721eSCharles.Forsyth } 1068911721eSCharles.Forsyth 1078911721eSCharles.Forsyth man2txt $i | 1088911721eSCharles.Forsyth plumb -i -d edit -a action showdata -a filename '/man/'^${tl $x}^'('^${hd $x}^')' 1098911721eSCharles.Forsyth 1108911721eSCharles.Forsyth } 1118911721eSCharles.Forsyth } 1128911721eSCharles.Forsyth 1138911721eSCharles.Forsyth} 114