#! /bin/sh
### BEGIN INIT INFO
# Provides:          bootlogd
# Required-Start:    mountdevsubfs
# X-Start-Before:    hostname keymap keyboard-setup procps pcmcia hwclock hwclockfirst hdparm hibernate-cleanup lvm2
# Required-Stop:
# Default-Start:     S
# Default-Stop:
# Short-Description: Start or stop bootlogd.
# Description:       Starts or stops the bootlogd log program
#                    which logs boot messages.
### END INIT INFO

PATH=/sbin:/bin # No remote fs at start
DAEMON=/sbin/bootlogd
TMPLOG=/run/bootlog
[ -x "$DAEMON" ] || exit 0
NAME=bootlogd
DESC="boot logger"
BOOTLOGD_OPTS="-e -c -l $TMPLOG"
. /lib/init/vars.sh

. /lib/lsb/init-functions

# Previously this script was symlinked as "stop-bootlogd" which, when run
# with the "start" argument, should stop bootlogd.  Now stop-bootlogd is
# a distinct script, but for backward compatibility this script continues
# to implement the old behavior.
SCRIPTNAME=${0##*/}
SCRIPTNAME=${SCRIPTNAME#[SK]??}
ACTION="$1"
case "$0" in
	*stop-bootlog*)
		[ "$ACTION" = start ] && ACTION=stop
		;;
esac

if [ -d /run/systemd/system ]; then
	if [ "$ACTION" = start ] && [ -f /var/log/boot ]; then
		echo "(Booted up using systemd which doesn't write logs to system console. Please check 'journalctl -b' instead.)" >/var/log/boot
	fi
	log_daemon_msg "Skipping $NAME while running systemd"
	exit 0
fi

case "$ACTION" in
	start)
		# PATH is set above
		log_daemon_msg "Starting $DESC" "$NAME"
		if [ -d /proc/1/. ]; then
			umask 027
			start-stop-daemon --start --quiet --exec $DAEMON -- \
				$BOOTLOGD_OPTS
			ES=$?
		else
			$DAEMON $BOOTLOGD_OPTS
			ES=$?
		fi
		[ "$VERBOSE" != no ] && log_end_msg $ES
		;;
	stop)
		PATH=/bin:/sbin:/usr/bin:/usr/sbin
		[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
		start-stop-daemon --oknodo --stop --quiet --exec $DAEMON
		ES=$?
		sleep 1
		[ "$VERBOSE" != no ] && log_end_msg $ES
		if [ -r "$TMPLOG" ]; then
			savelog -q -p -n -c 5 /var/log/boot
			cat "$TMPLOG" >>/var/log/boot
			rm -f "$TMPLOG"
		fi
		;;
	restart | force-reload)
		"$0" stop
		"$0" start
		;;
	status)
		status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
		;;
	*)
		echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
		exit 3
		;;
esac

:
