X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fwigyori.git;a=blobdiff_plain;f=include%2Fshell.sh;h=6389304c24bdd7f798b3a71f957dbfaad9cfa3e5;hp=6ee0cf6030ac5e0a71d7be1c2438c58ee9724caf;hb=7002f6326e9dcd4cb3272763ba9b9debd9f3a60d;hpb=60c1f0f64d23003a19a07d6b9638542130f6641d diff --git a/include/shell.sh b/include/shell.sh index 6ee0cf6030..6389304c24 100644 --- a/include/shell.sh +++ b/include/shell.sh @@ -13,3 +13,25 @@ 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 + } + } +)} + +md5s() { + cat "$@" | ( + md5sum 2>/dev/null || + md5 + ) | awk '{print $1}' +}