#!/usr/bin/openrc-run

. /opt/etc/functions.openrc

RUNAS=root
EXEC=/usr/bin/apcupsd

CONFIG=${CONFIG-"/opt/etc/apcupsd/apcupsd.conf"}
PIDFILE=${PIDFILE-"/var/run/apcupsd.pid"}

depend()
{
	need net
	provide ${SVCNAME}
}

start()
{
	local _lockdir _rv=1
	ebegin "Starting \"${SVCNAME}\""
	while true; do
		update_me
		if ! [ -r ${CONFIG} ]; then
			eerror "${ME}: missing apcupsd configuration file \"${CONFIG}\""
			break
		fi
		_lockdir=$(cat ${CONFIG} | grep LOCKFILE | awk '{print $2;}')
		if [ -z "${_lockdir}" ]; then
			eerror "${ME}: LOCKFILE missing in configuration file \"${CONFIG}\""
			break
		fi
		if [ -d "${_lockdir}" ]; then
			[ $(find ${_lockdir} -type f | wc -l) -gt 0 ] && \
			ewarn "${ME}: there some files already present in lock dir \"${_lockdir}\""
		else
			mkdir -p "${_lockdir}"
			if ! [ -d "${_lockdir}" ]; then
				eerror "${ME}: unable to create lockdir \"${_lockdir}\""
				break
			fi
		fi
		start-stop-daemon --start --exec ${EXEC} \
			--user ${RUNAS} --make-pidfile --pidfile ${PIDFILE} --background -- \
			-b ${APCUPSD_FLAGS}
		_rv=$?
		break
	done
	eend ${_rv}
	return ${_rv}
}

stop()
{
	ebegin "Stopping \"${SVCNAME}\""
	start-stop-daemon --stop --exec ${EXEC} --retry SIGTERM/10 --pidfile ${PIDFILE}
	eend 0
}
