if test $r -eq 1; then
printf '%s\n' "$i" || r=2
fi
+ test 256 -le $r && r=$(expr 128 + $r % 128)
exit $r
}
elif test $with_filename -eq 0 &&
sed_script="s|^|$i:|"
# Fail if grep or sed fails.
- r=$(
- exec 4>&1
- (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
- ) && exit $r
- r=$?
- test 1 -lt $r && exit $r || exit 2
+ if r=$(
+ exec 4>&1
+ (eval "$grep" 4>&-; echo $? >&4) 3>&- | sed "$sed_script" >&3 4>&-
+ ) || { r=$?; test $r -lt 2 && r=2; :; }; then
+ test 256 -le $r && r=$(expr 128 + $r % 128)
+ exit $r
+ fi
fi >&3 5>&-
)
r=$?
# Use the more serious of the grep and gzip statuses.
test $r -lt $gzip_status && r=$gzip_status
- # Exit immediately on software configuration error.
- test 126 -le $r && exit $r
-
# Accumulate the greatest status, except consider 0 to be greater than 1.
if test $r -le 1 && test $res -le 1; then
test $r -lt $res
else
test $res -lt $r
fi && res=$r
+
+ # Exit immediately on a serious error.
+ test 126 -le $res && break
done
+
+test 128 -le $res && kill -$(expr $res % 128) $$
exit $res