require get_program_name
__bomb_internal ()
{
local message="$@"
local progname=`get_program_name`
local stackdepth=$((${#FUNCNAME[@]} - 2))
local i callstack
for ((i = stackdepth; i > 1; i--)); do
callstack="${callstack}${FUNCNAME[i]}: "
done
(echo "${progname}: ${callstack}${message}" | fmt -tw 78 >&2)
((LIBSH_ERROR_EXIT)) && exit 1
}
warn () { LIBSH_ERROR_EXIT=0; __bomb_internal "$@"; }
bomb () { LIBSH_ERROR_EXIT=1; __bomb_internal "$@"; }
error () { LIBSH_ERROR_EXIT=1; __bomb_internal "$@"; }