#!/bin/sh -

# wh - list all instances of given files in a search path
# Steve Kinzler, steve@kinzler.com, Oct 93/Apr 08/Jan 17
# https://kinzler.com/me/home.html#unix

path="$PATH"; glob=; bad=

PATH=/bin:/usr/bin; export PATH

while :
do
	case $# in
	0)	break;;
	*)	case "$1" in
		-p)	shift; path="$1";;
		-g)	glob=t;;

		--)	shift; break;;
		-h)	bad=t; break;;
		-*)	bad=t; echo "$0: unknown option ($1)" 1>&2;;
		*)	break;;
		esac
		shift;;
	esac
done

case "$#,$bad" in
0,*|*,?*)	cat << EOF 1>&2
usage: $0 [ -p path ] [ -g ] pattern ...
	-p	search only the given path (default $PATH)
	-g	assume *-globs around each pattern
Any \$WH_ROOT is used as a root for all items in the path.
EOF
		exit 1;;
esac

root="${WH_ROOT-}"

for patt
do
	case "$glob" in
	?*)	patt="*$patt*";;
	esac

	for dir in `echo "$path" | tr : ' '`
	do
		eval ls -d "$root$dir/$patt" 2\> /dev/null | cat
	done
done
