#! /bin/sh

# PostgreSQL boot time startup script for FreeBSD.  Copy this file to
# /usr/local/etc/rc.d/postgresql.

# Created through merger of the Linux start script by Ryan Kirkpatrick
# and the script in the FreeBSD ports collection.

# contrib/start-scripts/freebsd

## EDIT FROM HERE

# Installation prefix
prefix=/usr/local/pgsql

# Data directory
PGDATA="/usr/local/pgsql/data"

# Who to run the postmaster as, usually "postgres".  (NOT "root")
PGUSER=postgres

# Where to keep a log file
PGLOG="$PGDATA/serverlog"

## STOP EDITING HERE

# The path that is to be used for the script
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# What to use to start up the postmaster.  (If you want the script to wait
# until the server has started, you could use "pg_ctl start" here.)
DAEMON="$prefix/bin/postmaster"

# What to use to shut down the postmaster
PGCTL="$prefix/bin/pg_ctl"

# Only start if we can find the postmaster.
test -x $DAEMON ||
{
	echo "$DAEMON not found"
	exit 0
}

case $1 in
    start)
	su -l $PGUSER -c "$DAEMON -D '$PGDATA' >>$PGLOG 2>&1 &"
	echo -n ' postgresql'
	;;
    stop)
	su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s"
	;;
    restart)
	su -l $PGUSER -c "$PGCTL stop -D '$PGDATA' -s"
	su -l $PGUSER -c "$DAEMON -D '$PGDATA' >>$PGLOG 2>&1 &"
	;;
    status)
	su -l $PGUSER -c "$PGCTL status -D '$PGDATA'"
	;;
    *)
	# Print help
	echo "Usage: `basename $0` {start|stop|restart|status}" 1>&2
	exit 1
	;;
esac

exit 0
