1#! /bin/bash
2#
3# starts @progtitle@ from the installation directory and keeps it running
4
5[ X"${PIDDIR}" = X"" ] && PIDDIR=${HOME}/.@prognamebase@
6[ X"${VARDIR}" = X"" ] && VARDIR=${HOME}/.@prognamebase@/var
7[ X"${BINDIR}" = X"" ] && BINDIR=@prefix_reloc@/bin
8
9echo $$ > ${PIDDIR}/@progname@-starter.pid
10
11cd ${VARDIR}
12
13run() {
14    ${BINDIR}/@progname@@executable_suffix@ --userdatadir ${VARDIR} --daemon $* &
15    jobs -p > ${PIDDIR}/@progname@.pid
16    [ -s ${PIDDIR}/@progname@.pid ] || { echo "Warning: main program PID unavailable, server can't be stopped reliably."; echo $$ > ${PIDDIR}/@progname@.pid ; }
17    wait
18    echo Terminated
19}
20
21while true; do
22  STARTDATE=`date +%s`
23
24  run $*
25
26  # give up if restarts come too quickly; ten per minute is suspicious
27  OLDESTSTART=${STARTDATE_LOG[1]}
28  if [ ! -z "$OLDESTSTART" ]; then
29      TIMESPENT=`expr ${STARTDATE} - ${OLDESTSTART}`
30      if [ $TIMESPENT -lt 60 ]; then
31          echo "Stopping server, it is restarting too quickly."
32          rm -f ${PIDDIR}/@progname@-starter.pid
33          rm -f ${PIDDIR}/@progname@.pid
34          exit
35      fi
36  fi
37
38  # keep log of past start dates
39  for f in 1 2 3 4 5 6 7 8 9; do
40      next=`expr $f + 1`
41      STARTDATE_LOG[$f]=${STARTDATE_LOG[$next]}
42  done
43  STARTDATE_LOG[10]=${STARTDATE}
44done
45