diff options
author | Felix Fietkau <nbd@openwrt.org> | 2006-11-27 04:25:34 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2006-11-27 04:25:34 +0000 |
commit | e18ccccffd9c3ada0297e732669d6278aaa816c6 (patch) | |
tree | feba8f12ecf70a0ebc7f38cb26cdcb0c2b49b6ec /include/shell.sh | |
parent | 52e3598376671160bb3387ce32a9c0d92f5cef64 (diff) | |
download | upstream-e18ccccffd9c3ada0297e732669d6278aaa816c6.tar.gz upstream-e18ccccffd9c3ada0297e732669d6278aaa816c6.tar.bz2 upstream-e18ccccffd9c3ada0297e732669d6278aaa816c6.zip |
trap chmod errors in tar unpack on bsd - modes like 02755 fail
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@5656 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'include/shell.sh')
-rw-r--r-- | include/shell.sh | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/shell.sh b/include/shell.sh index 6ee0cf6030..1e60692b97 100644 --- a/include/shell.sh +++ b/include/shell.sh @@ -13,3 +13,18 @@ isset() { eval "var=\"\${$1}\"" [ -n "$var" ] } + +trapret() {( + local retvals="$1"; shift + local cmd="$1"; shift + for retval in $(echo $retvals); do + local trap_$retval=1 + done + "$cmd" "$@" || { + local retval="$?" + eval "trapped=\${trap_$retval}" + [ -n "$trapped" ] || { + return $retval + } + } +)} |