xref: /plan9/rc/bin/lookman (revision 9f2726c34299ea5a81cda1b22133dd5a4b421e04)
13e12c5d1SDavid du Colombier#!/bin/rc
23e12c5d1SDavid du Colombier# Usage: lookman key ...
33e12c5d1SDavid du Colombier#	prints out the names of all manual pages containing all the given keywords
4*9f2726c3SDavid du Colombierrfork e
53e12c5d1SDavid du Colombierindex=/sys/lib/man/lookman/index
63e12c5d1SDavid du Colombiert1=/tmp/look1.$pid
73e12c5d1SDavid du Colombiert2=/tmp/look2.$pid
8*9f2726c3SDavid du Colombierfn sigexit {
93e12c5d1SDavid du Colombier	rm -f $t1 $t2
10*9f2726c3SDavid du Colombier	exit
113e12c5d1SDavid du Colombier}
12*9f2726c3SDavid du Colombierfn sigint sighup sigterm {
13*9f2726c3SDavid du Colombier	rm -f $t1 $t2
14*9f2726c3SDavid du Colombier	exit note
15*9f2726c3SDavid du Colombier}
16*9f2726c3SDavid du Colombier
17f3793cddSDavid du Colombier*=`{echo $*|tr A-Z a-z|tr -dc 'a-z0-9_. \012'}	# fold case, delete funny chars
183e12c5d1SDavid du Colombierif(~ $#* 0){
193e12c5d1SDavid du Colombier	echo Usage: lookman key ... >/fd/2
20*9f2726c3SDavid du Colombier	exit usage
213e12c5d1SDavid du Colombier}
223e12c5d1SDavid du Colombierlook $1 $index | sed 's/.*	//' | sort -u >$t1
233e12c5d1SDavid du Colombiershift
243e12c5d1SDavid du Colombierfor(i in $*){
253e12c5d1SDavid du Colombier	look $i $index | sed 's/.*	//' | sort -u |
263e12c5d1SDavid du Colombier		awk 'BEGIN {
27*9f2726c3SDavid du Colombier			while (getline < "'$t1'" > 0)
28*9f2726c3SDavid du Colombier				table[$0] = 1
293e12c5d1SDavid du Colombier			}
303e12c5d1SDavid du Colombier			{ if (table[$0]) print }
313e12c5d1SDavid du Colombier		' > $t2
323e12c5d1SDavid du Colombier	mv $t2 $t1
333e12c5d1SDavid du Colombier}
349a747e4fSDavid du Colombiersort $t1 | sed 's;/sys/man/;;
359a747e4fSDavid du Colombier	s;(.*)/(.*);man \1 \2 # \2(\1);'
36*9f2726c3SDavid du Colombierexit ''
37