#!/bin/sh

# findman -- tant donn un motif de description et motif de recherche,
#   donne toutes les pages du manuel dont la description correspond au
#   premier et dont le contenu correspond au second. On peut aussi
#   prciser, de manire facultative, une section du manuel.

match1="/tmp/$0.1.$$" 
matches="/tmp/$0.$$"
manpagelist=""

trap "rm -f $match1 $matches" EXIT

case $#
in
  3 ) section="$1"  cmdpat="$2"  manpagepat="$3"   ;;
  2 ) section=""    cmdpat="$1"  manpagepat="$2"   ;;
  * ) echo "Syntaxe: $0 [section] motif_description motif_page" >&2
      exit 1 
esac

if ! man -k "$cmdpat" | grep "($section" > $match1 ; then
  echo "Rien ne correspond au motif $cmdpat. Essayez un motif plus vague..." >&2; exit 1 
fi

cut -d \( -f1 < $match1 > $matches   # seulement les noms de commande
cat /dev/null > $match1              # on efface le fichier...

for manpage in $(cat $matches)
do
  manpagelist="$manpagelist $manpage"
  man $manpage 2> /dev/null | col -b | grep -i $manpagepat | \
    sed "s/^/${manpage}: /" | tee -a $match1 
done

if [ ! -s $match1 ] ; then 
  cat << EOF 
Le motif de description $cmdpat a renvoy des pages, mais aucune de
celles-ci ne correspond au motif de recherche $manpagepat.
Pages de manuel contrles: $manpagelist
EOF
fi

exit 0
