37 lines
730 B
Plaintext
37 lines
730 B
Plaintext
|
#!/bin/rc
|
||
|
# Usage: lookman key ...
|
||
|
# prints out the names of all manual pages containing all the given keywords
|
||
|
rfork e
|
||
|
index=/sys/lib/man/lookman/index
|
||
|
t1=/tmp/look1.$pid
|
||
|
t2=/tmp/look2.$pid
|
||
|
fn sigexit {
|
||
|
rm -f $t1 $t2
|
||
|
exit
|
||
|
}
|
||
|
fn sigint sighup sigterm {
|
||
|
rm -f $t1 $t2
|
||
|
exit note
|
||
|
}
|
||
|
|
||
|
*=`{echo $*|tr A-Z a-z|tr -dc 'a-z0-9_. \012'} # fold case, delete funny chars
|
||
|
if(~ $#* 0){
|
||
|
echo Usage: lookman key ... >/fd/2
|
||
|
exit usage
|
||
|
}
|
||
|
look $1 $index | sed 's/.* //' | sort -u >$t1
|
||
|
shift
|
||
|
for(i in $*){
|
||
|
look $i $index | sed 's/.* //' | sort -u |
|
||
|
awk 'BEGIN {
|
||
|
while (getline < "'$t1'" > 0)
|
||
|
table[$0] = 1
|
||
|
}
|
||
|
{ if (table[$0]) print }
|
||
|
' > $t2
|
||
|
mv $t2 $t1
|
||
|
}
|
||
|
sort $t1 | sed 's;/sys/man/;;
|
||
|
s;(.*)/(.*);man \1 \2 # \2(\1);'
|
||
|
exit ''
|