rsc | 2b85f70 | 2005-01-11 20:58:13 +0000 | [diff] [blame] | 1 | #!/usr/local/plan9/bin/rc |
rsc | 9bbe459 | 2005-01-14 05:55:09 +0000 | [diff] [blame] | 2 | |
| 3 | . 9.rc |
| 4 | |
rsc | 3ff9213 | 2005-01-04 22:11:58 +0000 | [diff] [blame] | 5 | # Usage: lookman key ... |
| 6 | # prints out the names of all manual pages containing all the given keywords |
rsc | 2c500ad | 2005-01-11 17:49:03 +0000 | [diff] [blame] | 7 | index=$PLAN9/man/lookman.index |
rsc | 3ff9213 | 2005-01-04 22:11:58 +0000 | [diff] [blame] | 8 | t1=/tmp/look1.$pid |
| 9 | t2=/tmp/look2.$pid |
| 10 | fn sigexit sigint sighup sigterm{ |
| 11 | rm -f $t1 $t2 |
| 12 | exit 1 |
| 13 | } |
| 14 | *=`{echo $*|tr A-Z a-z|tr -dc 'a-z0-9_ \012'} # fold case, delete funny chars |
| 15 | if(~ $#* 0){ |
rsc | 45cb54e | 2006-04-06 15:58:01 +0000 | [diff] [blame] | 16 | echo usage: lookman key ... >[1=2] |
rsc | 3ff9213 | 2005-01-04 22:11:58 +0000 | [diff] [blame] | 17 | exit 1 |
| 18 | } |
| 19 | look $1 $index|sed 's/.* //'|sort -u >$t1 |
| 20 | shift |
| 21 | for(i in $*){ |
| 22 | look $i $index|sed 's/.* //'|sort -u| |
| 23 | awk 'BEGIN { |
| 24 | while (getline < "'$t1'" > 0) table[$0] = 1; |
| 25 | } |
| 26 | { if (table[$0]) print } |
| 27 | ' > $t2 |
| 28 | mv $t2 $t1 |
| 29 | } |
rsc | 2c500ad | 2005-01-11 17:49:03 +0000 | [diff] [blame] | 30 | sort $t1 | sed 's;/.*/man/man[0-9]*/;; |
rsc | 3ff9213 | 2005-01-04 22:11:58 +0000 | [diff] [blame] | 31 | s;(.*)\.(.*);man \2 \1 # \1(\2);' |
| 32 | rm -f $t1 $t2 |
| 33 | exit 0 |