commit:     2b62104633008cc30df24808029430516a6d9a7b
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 21 14:24:23 2017 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Mar  4 21:03:52 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=2b621046

isolated-functions.sh: Ensure informational command output to stderr

Ensure that einfo, elog, ewarn... commands direct all output to stderr
consistently. This ensures that various logging messages won't pollute
stdout, and therefore be accidentally caught in $().

This satisfies the 'output commands do not pollute' stdout requirement
that is tentatively included in EAPI 7.

Bug: https://bugs.gentoo.org/483240

 bin/isolated-functions.sh | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh
index 1ca959bb3..0acb81607 100644
--- a/bin/isolated-functions.sh
+++ b/bin/isolated-functions.sh
@@ -1,5 +1,5 @@
 #!/bin/bash
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 source "${PORTAGE_BIN_PATH}/eapi.sh" || exit 1
@@ -247,7 +247,7 @@ __quiet_mode() {
 }
 
 __vecho() {
-       __quiet_mode || echo "$@"
+       __quiet_mode || echo "$@" >&2
 }
 
 # Internal logging function, don't use this in ebuilds
@@ -273,9 +273,9 @@ __elog_base() {
 
 eqawarn() {
        __elog_base QA "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
        echo -e "$@" | while read -r ; do
-               __vecho " $WARN*$NORMAL $REPLY" >&2
+               __vecho " $WARN*$NORMAL $REPLY"
        done
        LAST_E_CMD="eqawarn"
        return 0
@@ -283,9 +283,9 @@ eqawarn() {
 
 elog() {
        __elog_base LOG "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
        echo -e "$@" | while read -r ; do
-               echo " $GOOD*$NORMAL $REPLY"
+               echo " $GOOD*$NORMAL $REPLY" >&2
        done
        LAST_E_CMD="elog"
        return 0
@@ -293,9 +293,9 @@ elog() {
 
 einfo() {
        __elog_base INFO "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
        echo -e "$@" | while read -r ; do
-               echo " $GOOD*$NORMAL $REPLY"
+               echo " $GOOD*$NORMAL $REPLY" >&2
        done
        LAST_E_CMD="einfo"
        return 0
@@ -303,15 +303,15 @@ einfo() {
 
 einfon() {
        __elog_base INFO "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
-       echo -ne " ${GOOD}*${NORMAL} $*"
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
+       echo -ne " ${GOOD}*${NORMAL} $*" >&2
        LAST_E_CMD="einfon"
        return 0
 }
 
 ewarn() {
        __elog_base WARN "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
        echo -e "$@" | while read -r ; do
                echo " $WARN*$NORMAL $RC_INDENTATION$REPLY" >&2
        done
@@ -321,7 +321,7 @@ ewarn() {
 
 eerror() {
        __elog_base ERROR "$*"
-       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo
+       [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo >&2
        echo -e "$@" | while read -r ; do
                echo " $BAD*$NORMAL $RC_INDENTATION$REPLY" >&2
        done
@@ -339,7 +339,7 @@ ebegin() {
                msg="${msg} ..."
        fi
        einfon "${msg}"
-       [[ ${RC_ENDCOL} == "yes" ]] && echo
+       [[ ${RC_ENDCOL} == "yes" ]] && echo >&2
        LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} ))
        LAST_E_CMD="ebegin"
        return 0
@@ -359,10 +359,10 @@ __eend() {
        fi
 
        if [[ ${RC_ENDCOL} == "yes" ]] ; then
-               echo -e "${ENDCOL} ${msg}"
+               echo -e "${ENDCOL} ${msg}" >&2
        else
                [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0
-               printf "%$(( COLS - LAST_E_LEN - 7 ))s%b\n" '' "${msg}"
+               printf "%$(( COLS - LAST_E_LEN - 7 ))s%b\n" '' "${msg}" >&2
        fi
 
        return ${retval}

Reply via email to