#!/bin/sh
#
# restorecond:		Daemon used to maintain path file context
#
# chkconfig:	- 12 87
# description:	restorecond uses inotify to look for creation of new files \
# listed in the /etc/selinux/restorecond.conf file, and restores the \
# correct security context.
#
# processname: /usr/sbin/restorecond
# config: /etc/selinux/restorecond.conf 
# pidfile: /run/restorecond.pid
#
# Return values according to LSB for all commands but status:
# 0 - success
# 1 - generic or unspecified error
# 2 - invalid or excess argument(s)
# 3 - unimplemented feature (e.g. "reload")
# 4 - insufficient privilege
# 5 - program is not installed
# 6 - program is not configured
# 7 - program is not running

PATH=/sbin:/bin:/usr/bin:/usr/sbin

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

[ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled || exit 7

# Check that we are root ... so non-root users stop here
test $EUID = 0  || exit 4

test -x /usr/sbin/restorecond  || exit 5
test -f /etc/selinux/restorecond.conf  || exit 6

RETVAL=0

start() 
{
        echo -n $"Starting restorecond: "
	unset HOME MAIL USER USERNAME
        daemon /usr/sbin/restorecond 
	RETVAL=$?
	touch /var/lock/subsys/restorecond
        echo
	return $RETVAL
}

stop() 
{
        echo -n $"Shutting down restorecond: "
	killproc restorecond
	RETVAL=$?
	rm -f  /var/lock/subsys/restorecond
        echo
	return $RETVAL
}

restart() 
{
    stop
    start
}

# See how we were called.
case "$1" in
  start)
	start
        ;;
  stop)
	stop
        ;;
  status)
	status restorecond
	RETVAL=$?
	;;
  force-reload|restart|reload)
	restart
	;;
  condrestart)
	[ -e /var/lock/subsys/restorecond ] && restart || :
	;;
  *)
        echo $"Usage: $0 {start|stop|restart|force-reload|status|condrestart}"
        RETVAL=3
esac

exit $RETVAL
