1stMud/CVS/
1stMud/area/CVS/
1stMud/backup/CVS/
1stMud/bin/
1stMud/bin/CVS/
1stMud/bin/extras/
1stMud/bin/extras/CVS/
1stMud/data/CVS/
1stMud/data/i3/CVS/
1stMud/doc/1stMud/
1stMud/doc/1stMud/CVS/
1stMud/doc/CVS/
1stMud/doc/Diku/
1stMud/doc/Diku/CVS/
1stMud/doc/MPDocs/CVS/
1stMud/doc/Merc/CVS/
1stMud/doc/Rom/
1stMud/doc/Rom/CVS/
1stMud/log/CVS/
1stMud/notes/
1stMud/notes/CVS/
1stMud/player/CVS/
1stMud/player/backup/CVS/
1stMud/player/deleted/CVS/
1stMud/src/CVS/
1stMud/src/config/CVS/
1stMud/src/h/CVS/
1stMud/src/o/CVS/
1stMud/win/CVS/
#!/bin/sh
#
# Start 1stMud Services
#
# description:  Starts/stops 1stMud Services
#

BINARY=../bin/1stMud
PID_FILE=$BINARY.pid
SHUTDOWN_FILE=../data/shutdown.txt
ARGLIST="$2 $3 $4 $5 $6 $7 $8 $9"

# Function declarations
#
start_mud() {
  while [ 1 ]; do
    $BINARY --startup-script $ARGLIST > /dev/null 2>&1 &
    RUN_PID="$!"
    echo $RUN_PID > $PID_FILE

    wait $RUN_PID
#    RUN_EC="$?"
#    if [ "$RUN_EC" = "1" ]; then
#      exit 0
#    fi
    if [ -r $SHUTDOWN_FILE ]; then
	rm -f $SHUTDOWN_FILE;
	exit 0
    fi
  done
}

# Run the code
#
STATUS=""
if [ -r $PID_FILE ]; then
  PID=`cat $PID_FILE`

  if [ -n "$PID" ]; then 
    STATUS=`ps $PID | grep $PID`
  fi
fi

case "$1" in
status)
  if [ -n "$STATUS" ]; then
    echo "1stMud is running."
  else
    echo "1stMud is NOT running."
  fi
  ;;

start)
  if [ -n "$STATUS" ]; then
    echo "1stMud is ALREADY running."
    exit
  fi

  echo "Starting 1stMud Services..."
  start_mud &
  ;;

stop)
  if [ -z "$STATUS" ]; then
    echo "1stMud is NOT running ALREADY."
    exit
  fi

  echo "Stopping 1stMud Services..."
  kill -s SIGTERM $PID
  sleep 1

  rm -f $PID_FILE

  STATUS=`ps $PID | grep $PID`
  if [ -n "$STATUS" ]; then sleep 1; fi

  STATUS=`ps $PID | grep $PID`
  if [ -n "$STATUS" ]; then sleep 1; fi

  STATUS=`ps $PID | grep $PID`
  if [ -n "$STATUS" ]; then kill -s SIGKILL $PID; fi
  ;;

restart)
  $0 stop $ARGLIST
  $0 start $ARGLIST
  ;;

*)
  echo "Usage: $0 {start|stop|restart|status}"
  echo ""
  ;;
esac