xref: /inferno-os/dis/man (revision 492f69dc458aa1415bdf4490b615e71609e4a4ea)
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