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