#!/bin/sh
# vim: se ft=sh:

log_debug () {
	logger -t "${0##*/}[$$]" -p local0.debug "$@"
}
log_error () {
	logger -t "${0##*/}[$$]" -p local0.error "$@"
}
log_info () {
	logger -t "${0##*/}[$$]" -p local0.info "$@"
}
log_warn () {
	logger -t "${0##*/}[$$]" -p local0.warn "$@"
}

# can't get the return code from a piped process
# cat /etc/passwd | log_error => $? is from log_error not cat ;(
log_rt_error () {
	local fifo=/tmp/.log_rt_error_$$
	trap "trap - HUP QUIT TERM CHLD; log_error exited prematurely; rm -f $fifo; exit 1" \
		HUP QUIT TERM
	mkfifo -m 600 $fifo

	trap "trap - HUP QUIT TERM CHLD; rm -f $fifo" CHLD
	log_error <$fifo &
	"$@" 2>$fifo
}

log_clean () {
	unset -f log_debug log_error log_info log_rt_error
}