#! /bin/sh
#
# subversion         starts up the subversion daemon
#
# Written by Marco Solieri on a skeleton by Jurgen DEBO
#
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $syslog $local_fs $remote_fs $named $network
# Required-Stop:     $syslog $local_fs $remote_fs $named $network
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      1
# Short-Description: Subversion daemon
# Description:       Starts and stops the Subversion daemon svnserve, used to
#                    provide access to Subversion repositories.
### END INIT INFO

### LSB functions
source /lib/lsb/init-functions
### Default configuration
SYSCONFIG="/etc/default/subversion"
[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"

[ -x /usr/bin/svnserve ] || exit 1

RETVAL=0
PROGNAME="svnserve"
PROG="/usr/bin/$PROGNAME"
DESCR="Subversion daemon"

start() {
   echo -n $"Starting $DESCR ($PROGNAME): "
   $PROG -d --pid-file $PIDFILE -r $ROOTDIR $OPTIONS
   RETVAL=$?
   if [ $RETVAL -eq 0 ]; then
     touch $LOCKFILE
     echo done.
   else
     echo failed!
   fi
}

getpid() {
   pidstr=`pgrep $PROGNAME`
   pidarray=($pidstr)
   pidcount=${#pidarray}
   if [ ! -r "$PIDFILE" ] && [ $pidcount -ge 2 ]; then
     pid=${pidarray[0]}
   fi
}

stop() {
   echo -n $"Stopping $DESCR ($PROGNAME): "
   if [ -r "$PIDFILE" ]; then
        pid=`cat $PIDFILE`
        kill -s 3 $pid
        RETVAL=$?
   else
        RETVAL=1
   fi
   if [ $RETVAL -eq 0 ]; then
     rm -f $LOCKFILE
     rm -f $PIDFILE
     echo done.
   else
     echo failed!
   fi
   return $RETVAL
}

restart() {
        stop
        start
}

forcestop() {
   echo -n $"Stopping $DESCR ($PROGNAME): "
   kill -s 3 $pid
   RETVAL=$?
   if [ $RETVAL -eq 0 ]; then
     rm -f $LOCKFILE
     rm -f $PIDFILE
     echo done.
   else
     echo failed!
   fi
   return $RETVAL
}

status() {
   if [ -r "$PIDFILE" ]; then
        pid=`cat $PIDFILE`
   fi
   if [ $pid ]; then
        echo "$PROGNAME is running with pid $pid."
   else
        echo "$PROGNAME is not running."
   fi
}

getpid

case "$1" in
  start)
   start
   ;;
  stop)
   stop
   ;;
  restart)
   restart
   RETVAL=$?
   ;;
  condrestart)
   [ -e "$LOCKFILE" ] && restart
   RETVAL=$?
   ;;
  status)
   status
   ;;
  forcestop)
   forcestop
   ;;
  *)
   echo $"Usage: $0 {start|stop|forcestop|restart|condrestart|status}"
   RETVAL=1
esac

exit $RETVAL
