#!/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_OVERRIDE_EPREFIX}/usr/lib*/portage/* ]] && continue
	[[ ${path} == */._portage_reinstall_.* ]] && 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
