mirror of
https://github.com/notwa/rc
synced 2024-11-05 15:49:02 -08:00
67 lines
1 KiB
Text
67 lines
1 KiB
Text
|
#!/usr/bin/env sh
|
||
|
# this is `which` from Debian. the only changes are superficial (formatting).
|
||
|
# this does not work as-is with zsh.
|
||
|
|
||
|
set -ef
|
||
|
|
||
|
if test -n "$KSH_VERSION"; then
|
||
|
puts() {
|
||
|
print -r -- "$*"
|
||
|
}
|
||
|
else
|
||
|
puts() {
|
||
|
printf '%s\n' "$*"
|
||
|
}
|
||
|
fi
|
||
|
|
||
|
ALLMATCHES=0
|
||
|
|
||
|
while getopts a whichopts
|
||
|
do
|
||
|
case "$whichopts" in
|
||
|
a) ALLMATCHES=1 ;;
|
||
|
?) puts "Usage: $0 [-a] args"; exit 2 ;;
|
||
|
esac
|
||
|
done
|
||
|
shift $(($OPTIND - 1))
|
||
|
|
||
|
if [ "$#" -eq 0 ]; then
|
||
|
ALLRET=1
|
||
|
else
|
||
|
ALLRET=0
|
||
|
fi
|
||
|
case $PATH in
|
||
|
(*[!:]:) PATH="$PATH:" ;;
|
||
|
esac
|
||
|
for PROGRAM in "$@"; do
|
||
|
RET=1
|
||
|
IFS_SAVE="$IFS"
|
||
|
IFS=:
|
||
|
case $PROGRAM in
|
||
|
*/*)
|
||
|
if [ -f "$PROGRAM" ] && [ -x "$PROGRAM" ]; then
|
||
|
puts "$PROGRAM"
|
||
|
RET=0
|
||
|
fi
|
||
|
;;
|
||
|
*)
|
||
|
for ELEMENT in $PATH; do
|
||
|
if [ -z "$ELEMENT" ]; then
|
||
|
ELEMENT=.
|
||
|
fi
|
||
|
if [ -f "$ELEMENT/$PROGRAM" ] && [ -x "$ELEMENT/$PROGRAM" ]; then
|
||
|
puts "$ELEMENT/$PROGRAM"
|
||
|
RET=0
|
||
|
[ "$ALLMATCHES" -eq 1 ] || break
|
||
|
fi
|
||
|
done
|
||
|
;;
|
||
|
esac
|
||
|
IFS="$IFS_SAVE"
|
||
|
if [ "$RET" -ne 0 ]; then
|
||
|
ALLRET=1
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
exit "$ALLRET"
|