X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;ds=sidebyside;f=include%2Fshell.sh;h=1e60692b97fffcc1864146345da6b761cbe6c3f7;hb=c92885c466d11dc3b8e2837a8be1fd3b6b7e2e01;hp=6ee0cf6030ac5e0a71d7be1c2438c58ee9724caf;hpb=f52d66ff00b24111f87c274d3d7085ef2e1d27b1;p=openwrt-10.03%2F.git diff --git a/include/shell.sh b/include/shell.sh index 6ee0cf603..1e60692b9 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 + } + } +)}