aboutsummaryrefslogtreecommitdiffstats
path: root/include/shell.sh
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2006-11-27 04:25:34 +0000
committerFelix Fietkau <nbd@openwrt.org>2006-11-27 04:25:34 +0000
commit387570cc06ab3aca5824f1856b50a5e3ae5c2dc7 (patch)
treee6fb09b1dc1a0712bb7de1a20fab3a19853fd099 /include/shell.sh
parenta1ac6d1d9f89278cbd65cbb4b46481e63a29159a (diff)
downloadupstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.tar.gz
upstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.tar.bz2
upstream-387570cc06ab3aca5824f1856b50a5e3ae5c2dc7.zip
trap chmod errors in tar unpack on bsd - modes like 02755 fail
SVN-Revision: 5656
Diffstat (limited to 'include/shell.sh')
-rw-r--r--include/shell.sh15
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
+ }
+ }
+)}