#!/bin/bash
# Start ABRT kernel log watcher
#
# chkconfig: 35 82 16
# description: Watches system log for oops messages, creates problem directories for each oops
### BEGIN INIT INFO
# Provides: abrt-oops
# Required-Start: $abrtd
# Default-Stop: 0 1 2 6
# Default-Start: 3 5
# Short-Description: Watches system log for oops messages, creates problem directories for each oops
# Description: Watches system log for oops messages, creates problem directories for each oops
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

# For debugging
dry_run=false
verbose=false

# We don't have pid files, therefore have to use
# a flag file in /var/lock/subsys to enable GUI service tools
# to figure out our status
# Update: now we have pidfiles: "killall abrt-watch-log" is not selective enough :(
LOCK="/var/lock/subsys/abrt-oops"
PIDF="/var/run/abrt-oops.pid"

RETVAL=0

check() {
	# Check that we're a privileged user
	[ "`id -u`" = 0 ] || exit 4
}

start() {
	check
	kill "`cat -- "$PIDF" 2>/dev/null`" 2>/dev/null
	rm -f -- "$PIDF" 2>/dev/null
	# Scan dmesg
	dmesg | abrt-dump-oops -xD
	# Watch and scan /var/log/messages
	setsid abrt-watch-log -F "`abrt-dump-oops -m`" /var/log/messages -- abrt-dump-oops -xtD </dev/null >/dev/null 2>&1 &
	$dry_run || touch -- "$LOCK"
	return $RETVAL
}

stop() {
	check
	kill "`cat -- "$PIDF" 2>/dev/null`" 2>/dev/null
	rm -f -- "$PIDF" 2>/dev/null
	$dry_run || rm -f -- "$LOCK"
	return $RETVAL
}

restart() {
	stop
	start
}

reload() {
	restart
}

case "$1" in
start)
	start
	;;
stop)
	stop
	;;
reload)
	reload
	;;
force-reload)
	echo "$0: Unimplemented feature."
	RETVAL=3
	;;
restart)
	restart
	;;
condrestart)
	# Is it already running?
	if test -f "$LOCK"; then   # yes
		$verbose && printf "Running, restarting\n"
		restart
	fi
	;;
status)
	# Is it already running?
	if test -f "$LOCK"; then   # yes
		$verbose && printf "Running\n"
		RETVAL=0
	else
		$verbose && printf "Not running\n"
		RETVAL=3  # "stopped normally"
	fi
	;;
*)
	echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
	RETVAL=2
esac

exit $RETVAL
