98 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
set +o posix
 | 
						|
 | 
						|
quiet_safe_cd() {
 | 
						|
  cd "$1" &>/dev/null || {
 | 
						|
    echo "Error: failed to cd to $1" >&2
 | 
						|
    exit 1
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
absdir() {
 | 
						|
  quiet_safe_cd "${1%/*}/" && pwd -P
 | 
						|
}
 | 
						|
 | 
						|
dirbasepath() {
 | 
						|
  local dir="$1"
 | 
						|
  local base="${2##*/}"
 | 
						|
  echo "${dir}/${base}"
 | 
						|
}
 | 
						|
 | 
						|
realpath() {
 | 
						|
  local path="$1"
 | 
						|
  local dir
 | 
						|
  local dest
 | 
						|
 | 
						|
  dir="$(absdir "${path}")"
 | 
						|
  path="$(dirbasepath "${dir}" "${path}")"
 | 
						|
 | 
						|
  while [[ -L "${path}" ]]
 | 
						|
  do
 | 
						|
    dest="$(readlink "${path}")"
 | 
						|
    if [[ "${dest}" == "/"* ]]
 | 
						|
    then
 | 
						|
      path="${dest}"
 | 
						|
    else
 | 
						|
      path="${dir}/${dest}"
 | 
						|
    fi
 | 
						|
    dir="$(absdir "${path}")"
 | 
						|
    path="$(dirbasepath "${dir}" "${path}")"
 | 
						|
  done
 | 
						|
 | 
						|
  echo "${path}"
 | 
						|
}
 | 
						|
 | 
						|
executable() {
 | 
						|
  local file="$1"
 | 
						|
  [[ -f "${file}" && -x "${file}" ]]
 | 
						|
}
 | 
						|
 | 
						|
lowercase() {
 | 
						|
  echo "$1" | tr "[:upper:]" "[:lower:]"
 | 
						|
}
 | 
						|
 | 
						|
safe_exec() {
 | 
						|
  local arg0="$1"
 | 
						|
  if ! executable "${arg0}"
 | 
						|
  then
 | 
						|
    return
 | 
						|
  fi
 | 
						|
  # prevent fork-bombs
 | 
						|
  if [[ "$(lowercase "${arg0}")" == "${SHIM_FILE}" || "$(realpath "${arg0}")" == "${SHIM_REAL}" ]]
 | 
						|
  then
 | 
						|
    return
 | 
						|
  fi
 | 
						|
  if [[ "${HOMEBREW}" == "print-path" ]]
 | 
						|
  then
 | 
						|
    local dir
 | 
						|
    dir="$(quiet_safe_cd "${arg0%/*}/" && pwd)"
 | 
						|
    local path
 | 
						|
    path="$(dirbasepath "${dir}" "${arg0}")"
 | 
						|
    echo "${path}"
 | 
						|
    exit
 | 
						|
  fi
 | 
						|
  exec "$@"
 | 
						|
}
 | 
						|
 | 
						|
try_exec_non_system() {
 | 
						|
  local file="$1"
 | 
						|
  shift
 | 
						|
 | 
						|
  local path
 | 
						|
  while read -r path
 | 
						|
  do
 | 
						|
    if [[ "${path}" != "/usr/bin/${file}" ]]
 | 
						|
    then
 | 
						|
      safe_exec "${path}" "$@"
 | 
						|
    fi
 | 
						|
  done < <(type -aP "${file}")
 | 
						|
}
 | 
						|
 | 
						|
SHIM_FILE="${0##*/}"
 | 
						|
SHIM_REAL="$(realpath "$0")"
 | 
						|
 | 
						|
if [[ "$1" == "--homebrew="* ]]
 | 
						|
then
 | 
						|
  HOMEBREW="${1:11}"
 | 
						|
  shift
 | 
						|
fi
 |