#!/bin/bash

### BEGIN INIT INFO
# Provides:		homegear-dc-connector
# Required-Start:	$network $remote_fs $syslog ntp
# Required-Stop:	$network $remote_fs $syslog ntp
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Start Daisy Chain Connector
### END INIT INFO

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

. /lib/lsb/init-functions

CONFIGPATH=/etc/homegear
DAEMON=/usr/bin/homegear-dc-connector
PIDPATH=/var/run/homegear
PIDFILE=$PIDPATH/homegear-dc-connector.pid
LOGPATH=/var/log/homegear-dc-connector

test -x $DAEMON || exit 5

if [ -r /etc/default/homegear-dc-connector ]; then
        . /etc/default/homegear-dc-connector
fi

HOMEGEAR_DC_CONNECTOR_OPTS="$HOMEGEAR_DC_CONNECTOR_OPTS -d"

LOCKFILE=/var/lock/homegear-dc-connector

lock_homegear() {
        if [ -x /usr/bin/lockfile-create ]; then
                lockfile-create $LOCKFILE
                lockfile-touch $LOCKFILE &
                LOCKTOUCHPID="$!"
        fi
}

unlock_homegear() {
        if [ -x /usr/bin/lockfile-create ] ; then
                kill $LOCKTOUCHPID
                lockfile-remove $LOCKFILE
        fi
}

RUNASUSER=homegear
RUNASGROUP=homegear

case $1 in
        start)
				if test ! -d $PIDPATH; then
					mkdir -p $PIDPATH
				fi
				chown -R $RUNASUSER:$RUNASGROUP $PIDPATH
				chmod -R 750 $PIDPATH

				if test ! -d $LOGPATH; then
					mkdir -p $LOGPATH
				fi
				chown -R $RUNASUSER:$RUNASGROUP $LOGPATH
				chmod -R 750 $LOGPATH

                log_daemon_msg "Starting Homegear Daisy Chain Connector" "homegear-dc-connector"
                lock_homegear
                #Probably has no effect at all...
                ulimit -r 100
                start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE -u $RUNASUSER -g $RUNASGROUP $HOMEGEAR_DC_CONNECTOR_OPTS
                status=$?
                unlock_homegear

                log_end_msg $status
                ;;
        stop)
                log_daemon_msg "Stopping Homegear Daisy Chain Connector" "homegear-dc-connector"
                if test -e $PIDFILE; then
                	PID=`cat $PIDFILE`
                	PROCESSCOUNT=`ps --pid $PID | grep -c homegear-dc-connector`
                	if [ $PROCESSCOUNT -ne 0 ]; then
                		start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
                	fi
                	INDEX=0
                	while [ $PROCESSCOUNT -ne 0 ] && [ $INDEX -lt 5000 ]; do
                		sleep 0.01
                		PROCESSCOUNT=`ps --pid $PID | grep -c homegear-dc-connector`
                		if log_use_fancy_output; then
					        LOGLINE=`tail -n 20 $LOGPATH/homegear-dc-connector.log | grep -o ".[sS]hutdown. => .*$" | tail -n 1`
					        MESSAGE=`printf "%-70s" "${LOGLINE:14}"`
					        if [ ! -z "$LOGLINE" ]; then
				                $TPUT civis || true
				                $TPUT sc && \
				                $TPUT hpa 36 && \
				                CYAN=$( $TPUT setaf 6)
				                NORMAL=$( $TPUT op)
				                echo -ne "(${CYAN} $MESSAGE ${NORMAL})" || true
				                $TPUT rc || true
				                $TPUT cnorm || true
					        fi
						fi
                		INDEX=$((INDEX+1))
                	done
                	if log_use_fancy_output; then
		                $TPUT civis || true
		                $TPUT sc && \
		                $TPUT hpa 36 && \
		                CYAN=$( $TPUT setaf 6)
		                NORMAL=$( $TPUT op)
		                echo -ne "                                                                          " || true
		                $TPUT rc || true
		                $TPUT cnorm || true
					fi
                	if [ $PROCESSCOUNT -ne 0 ]; then
               			log_end_msg 1
               		else
               			log_end_msg 0
               		fi
                	rm -f $PIDFILE
                else
                	log_end_msg 1
                	echo "Can't stop homegear-dc-connector. There is no pid file."
                fi
                ;;
        restart|force-reload)
                $0 stop && sleep 2 && $0 start
                ;;
        try-restart)
                if $0 status >/dev/null; then
                        $0 restart
                else
                        exit 0
                fi
                ;;
        reload)
                log_daemon_msg "Reloading Homegear Daisy Chain Connector" "homegear-dc-connector"
                if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $PIDFILE; then
		            log_end_msg 0 || true
		        else
		            log_end_msg 1 || true
		        fi
                ;;
        status)
                status_of_proc $DAEMON "homegear-dc-connector"
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|reload|force-reload|status}"
                exit 2
                ;;
esac
