#!/usr/sbin/openrc-run

description="enhanced syslogd"
command="/usr/sbin/rsyslogd"
pidfile="/run/rsyslogd.pid"

extra_started_commands="rotate"

depend() {
	need localmount
	use clock
	after bootmisc
	provide logger
}

start_pre() {
	[ -x "$command" ] || return 1
	[ -r /etc/default/rsyslog ] && . /etc/default/rsyslog

	XCONSOLE=/dev/xconsole
	if [ "$(uname -s)" != "Linux" ]; then
		XCONSOLE=/run/xconsole
		ln -sf "$XCONSOLE" /dev/xconsole
	fi
	if [ ! -e "$XCONSOLE" ]; then
		mknod -m 640 "$XCONSOLE" p 2>/dev/null || true
		chown root:adm "$XCONSOLE" 2>/dev/null || true
		[ -x /sbin/restorecon ] && /sbin/restorecon "$XCONSOLE"
	fi
	return 0
}

start() {
	start_pre || return 1
	if [ -e "$pidfile" ] && start-stop-daemon -K -t -p "$pidfile" -x "$command" >/dev/null 2>&1; then
		einfo "${RC_SVCNAME} already started"
		return 0
	fi
	ebegin "Starting ${RC_SVCNAME}"
	start-stop-daemon -S -p "$pidfile" \
		-x "$command" -- ${RSYSLOGD_OPTIONS:-}
	eend $?
}

stop() {
	ebegin "Stopping ${RC_SVCNAME}"
	start-stop-daemon -K -p "$pidfile" -R TERM/30/KILL/5
	eend $?
}

start_post() {
	OMITDIR=/run/sendsigs.omit.d
	mkdir -p "$OMITDIR"
	ln -sf "$pidfile" "$OMITDIR/rsyslog"
}

rotate() {
	ebegin "Closing open files for rsyslog"
	start-stop-daemon -K -s HUP -p "$pidfile"
	eend $?
}
