#!/bin/bash
# Copyright 2012-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

source "${PORTAGE_BIN_PATH}"/isolated-functions.sh || exit 1

scriptpath=${BASH_SOURCE[0]}
scriptname=${scriptpath##*/}

IFS=':'

for path in ${PATH}; do
	[[ -x ${path}/${scriptname} ]] || continue
	[[ ${path} == */portage/*/ebuild-helpers* ]] && continue
	[[ ${path}/${scriptname} -ef ${scriptpath} ]] && continue
	IFS=$' \t\n'
	output=$("${path}/${scriptname}" "$@" 2>&1)
	if [[ $? -ne 0 ]] ; then

		# Avoid an extreme performance problem when the
		# output is very long (bug #470992).
		if [[ $(wc -l <<< "${output}") -gt 100 ]]; then
			output=$(head -n100 <<< "${output}")
			output="${output}\n ... (further messages truncated)"
		fi

		if ! ___eapi_has_prefix_variables; then
			EPREFIX=
		fi
		msg="${scriptname} failure ignored with unprivileged user:\n    ${scriptname} $*\n    ${output}"
		# Reverse expansion of ${D} and ${EPREFIX}, for readability.
		msg=${msg//${D}/'${D}'}
		if [[ -n ${EPREFIX} ]] ; then
			msg=${msg//${EPREFIX}/'${EPREFIX}'}
			msg=${msg//${EPREFIX#/}/'${EPREFIX}'}
		fi
		ewarn "${msg}"
	fi
	exit 0
done

exit 1
