commit: 16c504f37e471540d3835e7f2fe6beb1f133e29b
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 24 20:58:34 2017 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Apr 14 16:27:52 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=16c504f3
estack.eclass: Use 'shopt -p -o' to restore 'set' flags
Use 'shopt -p -o' to obtain the current set of 'set' flags, and to
restore them on popping. Unlike $-, it is output in command form (alike
'shopt -p'), removing the need for separate logic in eshopts_pop.
eclass/estack.eclass | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/eclass/estack.eclass b/eclass/estack.eclass
index 19c388f3d8d..f548abf8c28 100644
--- a/eclass/estack.eclass
+++ b/eclass/estack.eclass
@@ -158,7 +158,7 @@ eshopts_push() {
[[ $# -eq 0 ]] && return 0
shopt "$@" || die "${FUNCNAME}: bad options to shopt: $*"
else
- estack_push eshopts $-
+ estack_push eshopts "$(shopt -p -o)"
[[ $# -eq 0 ]] && return 0
set "$@" || die "${FUNCNAME}: bad options to set: $*"
fi
@@ -172,12 +172,7 @@ eshopts_push() {
eshopts_pop() {
local s
estack_pop eshopts s || die "${FUNCNAME}: unbalanced push"
- if [[ ${s} == "shopt -"* ]] ; then
- eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options:
${s}"
- else
- set +$- || die "${FUNCNAME}: sanity: invalid shell
settings: $-"
- set -${s} || die "${FUNCNAME}: sanity: unable to restore
saved shell settings: ${s}"
- fi
+ eval "${s}" || die "${FUNCNAME}: sanity: invalid shopt options: ${s}"
}
# @FUNCTION: eumask_push