diff options
-rw-r--r-- | src/output.sh | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/output.sh b/src/output.sh index 62d2095..320a46b 100644 --- a/src/output.sh +++ b/src/output.sh @@ -20,17 +20,28 @@ error() { - local status=${1} - local fmt="${2}" - shift 2 + case "${1}" in + *[!0-9]*) + local fmt="${1}" + shift 1 - printf '%s: Error: ' "${0##*/}" >&2 - printf "${fmt}\n" "${@}" >&2 - - # In a subshell, this will have no effect, so the shell's exit status - # will be 128+SIGINT. Meh. - exit_status=${status} - kill -s INT ${$} + printf '%s: Error: ' "${0##*/}" >&2 + printf "${fmt}\n" "${@}" >&2 + ;; + *) + local status=${1} + local fmt="${2}" + shift 2 + + printf '%s: Error: ' "${0##*/}" >&2 + printf "${fmt}\n" "${@}" >&2 + + # In a subshell, this will have no effect, so the + # shell's exit status will be 128+SIGINT. Meh. + exit_status=${status} + kill -s INT ${$} + ;; + esac } warn() |