#! /bin/sh
### BEGIN INIT INFO
# Provides:             sysklogd
# Required-Start:       $remote_fs $time
# Required-Stop:        $remote_fs $time
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    System logger
### END INIT INFO

set -e

if [ -f /etc/syslog-startup.conf ]; then
	. /etc/syslog-startup.conf
	LOG_LOCAL=0
	LOG_REMOTE=0
	for D in $DESTINATION; do
		if [ "$D" = "buffer" ]; then
			SYSLOG_ARGS="$SYSLOG_ARGS -C$BUFFERSIZE"
			LOG_LOCAL=1
		elif [ "$D" = "file" ]; then
			if [ -n "$LOGFILE" ]; then
				SYSLOG_ARGS="$SYSLOG_ARGS -O $LOGFILE"
			fi
			if [ -n "$ROTATESIZE" ]; then
				SYSLOG_ARGS="$SYSLOG_ARGS -s $ROTATESIZE"
			fi
			if [ -n "$ROTATEGENS" ]; then
				SYSLOG_ARGS="$SYSLOG_ARGS -b $ROTATEGENS"
			fi
			LOG_LOCAL=1
		elif [ "$D" = "remote" ]; then
			SYSLOG_ARGS="$SYSLOG_ARGS -R $REMOTE"
			LOG_REMOTE=1
		fi
	done
	if [ "$LOG_LOCAL" = "1" -a "$LOG_REMOTE" = "1" ]; then
		SYSLOG_ARGS="$SYSLOG_ARGS -L"
	fi
	if [ "$REDUCE" = "yes" ]; then
		SYSLOG_ARGS="$SYSLOG_ARGS -S"
	fi
	if [ "$DROPDUPLICATES" = "yes" ]; then
	    SYSLOG_ARGS="$SYSLOG_ARGS -D"
	fi
	if [ -n "$LOGLEVEL" ]; then
	    SYSLOG_ARGS="$SYSLOG_ARGS -l $LOGLEVEL"
	fi
else
	# default: log to 16K shm circular buffer
	SYSLOG_ARGS="-C"
fi

waitpid ()
{
  pid=$1
  # Give pid a chance to exit before we restart with a 5s timeout in 1s intervals
  if [ -z "$pid" ]; then
    return
  fi
  timeout=5;
  while [ $timeout -gt 0 ]
  do
    timeout=$(( $timeout-1 ))
    kill -0 $pid 2> /dev/null || break
    sleep 1
  done
}

case "$1" in
  start)
	echo -n "Starting syslogd/klogd: "
	start-stop-daemon -S -b -n syslogd -a /sbin/syslogd -- -n $SYSLOG_ARGS
	start-stop-daemon -S -b -n klogd -a /sbin/klogd -- -n
	echo "done"
	;;
  stop)
	echo -n "Stopping syslogd/klogd: "
	start-stop-daemon -K -n syslogd
	start-stop-daemon -K -n klogd
	echo "done"
	;;
  restart)
	pid1=`pidof syslogd`
	pid2=`pidof klogd`
	$0 stop
	waitpid $pid1
	waitpid $pid2
	$0 start
	;;
  *)
	echo "Usage: syslog { start | stop | restart }" >&2
	exit 1
	;;
esac

exit 0
