#!/bin/sh
#
# portreserve  This script starts and stops the TCP port reserver
# Originally written by Tim Waugh from Red Hat
# Adapted to Debian by Javier Fernandez-Sanguino
#
# description: portreserve is a TCP port reservation utility.

DAEMON=/sbin/portreserve
LABEL="Port reservation utility"
test -f $DAEMON || exit 0

NAME=`basename $DAEMON`
PIDFILE=/var/run/$prog.pid

running()
{
    # No pidfile, probably no daemon present
    #
    [ ! -f "$PIDFILE" ] && return 1
    pid=`cat $PIDFILE`
    # No pid, probably no daemon present
    [ -z "$pid" ] && return 1
    [ ! -d /proc/$pid ] &&  return 1
    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`

    [ "$cmd" != "$NAME" ] &&  return 1
    return 0
}

registered_services()
{
# Determine if there are any registered services, we return true
# if the directory exists and there are files that will _not_ be 
# ignored by portreserve (i.e. files with '~' or '.' in their names)
	if [ ! -d /etc/portreserve ] ; then
		return 1
	fi
	if [ -n "`find /etc/portreserve \! -name "*~" -a \! -name "*.*" -type f`" ] ; then
		return 1
	fi
	return 0
}


# See how we were called.
case "$1" in
  start)
	# Start daemon.
	if registered_services ; then
		echo -n "Starting $LABEL:"
		start-stop-daemon --start --pidfile $PIDFILE --quiet --oknodo --exec $DAEMON
		if running ; then
			echo " $NAME."
		else 
			echo " ERROR!"
			exit 1
		fi
	else
		echo "Not starting $LABEL, no services registered."
	fi
        ;;
  stop)
        # Stop daemon.
        echo -n "Stopping $LABEL: "
	start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
	if ! running ; then
		echo " $NAME."
	else 
		echo " ERROR!"
		exit 1
	fi
        ;;
  status)
    echo -n "$LABEL is "
    if running ;  then
            echo "running"
    else
            echo " not running."
            exit 1
    fi
    ;;
   reload|force-reload)
       $0 restart
       ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
	echo "Usage: $0 {start|stop|status|restart|reload|force-reload}"
	exit 1
esac

exit 0
