#!/bin/sh
#
# Start and stop the prime-net client.

test -x /usr/bin/prime-net || exit 0

case "$1" in
	start)
		echo -n "Starting GIMPS client: prime-net"
		cd /var/lib/prime-net || exit 1

		# Check if prime-net is running by sending signal 0, which 
		# has no effect.
		if start-stop-daemon --quiet --stop --signal 0 \
			--user daemon --name prime-net 2>/dev/null
		then
			echo " already running."
			exit
		fi

		# Figure out where start-stop-daemon is (it's moved between
		# bo and hamm, and it isn't in the path inside a su).
		if [ -x /sbin/start-stop-daemon ]; then
			ssd=/sbin/start-stop-daemon
		else
			ssd=/usr/sbin/start-stop-daemon
		fi

		su daemon -c "$ssd --start --quiet \
			--exec ./prime-net -- -B" \
			>>prime.log 2>&1 &

		echo "."
		;;
	stop)
		echo -n "Stopping the GIMPS client: prime-net"
		# Check if prime-net is running by sending signal 0, which 
		# has no effect.
		if start-stop-daemon --quiet --stop --signal 0 \
			--user daemon --name prime-net 2>/dev/null
		then
			start-stop-daemon --quiet --stop \
				--exec /usr/bin/prime-net \
				--user daemon --name prime-net
			attempts=0
			while start-stop-daemon --quiet --stop --signal 0 \
				--user daemon --name prime-net 2>/dev/null
			do
				echo -n "."
				sleep 1
				attempts=`expr $attempts + 1`
				if [ $attempts -gt 60 ]
				then
					echo
					echo "prime-net is still running. Giving up!"
					exit 1
				fi
			done
			echo
		else
			echo " not running."
		fi
		;;
	force-reload|restart)
		# -HUP has no effect on the client.
		# Check if the daemon is actually running.
		if start-stop-daemon --quiet --stop --signal 0 \
			--user daemon --name prime-net 2>/dev/null
		then
			$0 stop
			$0 start
		fi
		;;
	*)
		echo "Usage: /etc/init.d/prime-net {start|stop|restart|force-reload}"
		exit 2
esac

exit 0
