trap chmod errors in tar unpack on bsd - modes like 02755 fail
[openwrt/svn-archive/archive.git] / include / shell.sh
index 6ee0cf6..1e60692 100644 (file)
@@ -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
+               }
+       }
+)}