#!/bin/sh
#
# powersave		Starts the powersave daemon
#
# chkconfig:	345 98 02
# description:	Optimises power consumption, specially for laptops
# processname:	powersaved
#
# pidfile:	/var/run/powersave.pid

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

# Configuration file.
. /etc/sysconfig/powersaved

# Additional configs
. /etc/powersave/common
. /etc/powersave/cpufreq
. /etc/powersave/thermal

ACPI_EVENT_FILE="/var/run/acpid.socket"
GOVS="ondemand powersave performance userspace"

start() {
	# Load default cpufreq module
	if is_yes "$CPUFREQ_ENABLED"; then
	    if [ -n "$CPUFREQD_MODULE" ]; then
		if  [ ! -d /sys/devices/system/cpu/cpu0/cpufreq ]; then
            	    _modprobe $CPUFREQD_MODULE $CPUFREQD_MODULE_OPTS
		    # Load available governors
		    for i in $GOVS; do
			modprobe -q cpufreq_$i
		    done
		fi
    	    fi
	fi
	
	# Start daemons.
	if [ ! -f /var/lock/subsys/powersave ]; then
		# starting:
		msg_starting powersave
		daemon powersaved -d -f $ACPI_EVENT_FILE $PROGRAM_ARGS
		RETVAL=$?
		[ $RETVAL -eq 0 ] && touch /var/lock/subsys/powersave
	else
		msg_already_running powersave
	fi
}

stop() {
	# Stop daemons.
	if [ -f /var/lock/subsys/powersave ]; then
		msg_stopping powersave
		killproc powersaved
		rm -f /var/lock/subsys/powersave >/dev/null 2>&1
	else
		msg_not_running powersave
	fi
}

RETVAL=0
# See how we were called.
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  reload|force-reload)
	if [ -f /var/lock/subsys/powersave ]; then
		msg_reloading powersave
		killproc powersaved -HUP
		RETVAL=$?
	else
		msg_not_running powersave
		exit 7
	fi
	;;
  restart)
	stop
	start
	;;
  status)
	status powersaved
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|reload|force-reload|status}"
	exit 3
esac

exit $RETVAL
