#! /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/system/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
		cat "$TMPLOG" >> /var/log/boot
		rm -f "$TMPLOG"
	fi
	if [ -f /var/log/boot ] && [ -f /var/log/boot~ ]
	then
		[ "$VERBOSE" = no ] || log_action_begin_msg "Moving boot log file"
		# bootlogd writes to boot, making backup at boot~
		cd /var/log && {
			chgrp adm boot || :
			savelog -q -p -c 5 boot &&
			    mv boot.0 boot      &&
			    mv boot~ boot.0
		}
		ES=$?
		[ "$VERBOSE" = no ] || log_action_end_msg $ES
	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

:
