1#! /bin/sh
2### BEGIN INIT INFO
3# Provides:             sysklogd
4# Required-Start:       $remote_fs $time
5# Required-Stop:        $remote_fs $time
6# Default-Start:        2 3 4 5
7# Default-Stop:         0 1 6
8# Short-Description:    System logger
9### END INIT INFO
10
11set -e
12
13if [ -f /etc/syslog-startup.conf ]; then
14	. /etc/syslog-startup.conf
15	LOG_LOCAL=0
16	LOG_REMOTE=0
17	for D in $DESTINATION; do
18		if [ "$D" = "buffer" ]; then
19			SYSLOG_ARGS="$SYSLOG_ARGS -C$BUFFERSIZE"
20			LOG_LOCAL=1
21		elif [ "$D" = "file" ]; then
22			if [ -n "$LOGFILE" ]; then
23				SYSLOG_ARGS="$SYSLOG_ARGS -O $LOGFILE"
24			fi
25			if [ -n "$ROTATESIZE" ]; then
26				SYSLOG_ARGS="$SYSLOG_ARGS -s $ROTATESIZE"
27			fi
28			if [ -n "$ROTATEGENS" ]; then
29				SYSLOG_ARGS="$SYSLOG_ARGS -b $ROTATEGENS"
30			fi
31			LOG_LOCAL=1
32		elif [ "$D" = "remote" ]; then
33			SYSLOG_ARGS="$SYSLOG_ARGS -R $REMOTE"
34			LOG_REMOTE=1
35		fi
36	done
37	if [ "$LOG_LOCAL" = "1" -a "$LOG_REMOTE" = "1" ]; then
38		SYSLOG_ARGS="$SYSLOG_ARGS -L"
39	fi
40	if [ "$REDUCE" = "yes" ]; then
41		SYSLOG_ARGS="$SYSLOG_ARGS -S"
42	fi
43	if [ "$DROPDUPLICATES" = "yes" ]; then
44	    SYSLOG_ARGS="$SYSLOG_ARGS -D"
45	fi
46	if [ -n "$LOGLEVEL" ]; then
47	    SYSLOG_ARGS="$SYSLOG_ARGS -l $LOGLEVEL"
48	fi
49else
50	# default: log to 16K shm circular buffer
51	SYSLOG_ARGS="-C"
52fi
53
54waitpid ()
55{
56  pid=$1
57  # Give pid a chance to exit before we restart with a 5s timeout in 1s intervals
58  if [ -z "$pid" ]; then
59    return
60  fi
61  timeout=5;
62  while [ $timeout -gt 0 ]
63  do
64    timeout=$(( $timeout-1 ))
65    kill -0 $pid 2> /dev/null || break
66    sleep 1
67  done
68}
69
70case "$1" in
71  start)
72	echo -n "Starting syslogd/klogd: "
73	start-stop-daemon -S -b -n syslogd -a /sbin/syslogd -- -n $SYSLOG_ARGS
74	start-stop-daemon -S -b -n klogd -a /sbin/klogd -- -n
75	echo "done"
76	;;
77  stop)
78	echo -n "Stopping syslogd/klogd: "
79	start-stop-daemon -K -n syslogd
80	start-stop-daemon -K -n klogd
81	echo "done"
82	;;
83  restart)
84	pid1=`pidof syslogd`
85	pid2=`pidof klogd`
86	$0 stop
87	waitpid $pid1
88	waitpid $pid2
89	$0 start
90	;;
91  *)
92	echo "Usage: syslog { start | stop | restart }" >&2
93	exit 1
94	;;
95esac
96
97exit 0
98