| #!/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 |