#! /bin/sh
#
# Initialisation
#
# (This should set up values for POSTGRES_HOME and POSTGRES_DATA, which
# say where the library and database are.  It should also set up DATEFORMAT
# which governs whether the backend sends back dates in European or
# American format, and the logging options.)

startup () {
	# Shared-memory buffers
	if [ ! -z "${PGBUFFERS}" ]
	then
	    BUFFERS="-B ${PGBUFFERS}"
	fi

	# Debugging level
	if [ ! -z "${PGDEBUG}" ]
	then
	    DEBUGLEVEL="-d ${PGDEBUG}"
	fi

	# Authentication
	if [ ! -z "${PGAUTH}" ]
	then
	    AUTH="-a ${PGAUTH}"
	fi

	# TCP port
	if [ ! -z "${PGPORT}" ]
	then
	    PORT="-p ${PGPORT}"
	fi
	
	# Backend options
	# Query echoing
	if [ "${PGECHO}" = yes ]
	then
	    OPTIONS=-E
	fi

	# Timing stats
	if [ "${PGSTATS}" = yes ]
	then
	    OPTIONS="${OPTIONS} -s"
	fi

	# Fsync()
	if [ "${PGFSYNC}" = no ]
	then
	    OPTIONS="${OPTIONS} -F"
	fi

	# Sort memory
	if [ ! -z "${PGSORTMEM}" ]
	then
	    OPTIONS="${OPTIONS} -S ${PGSORTMEM}"
	fi

	# American or European date format
	if [ "${PGDATESTYLE}" != American ]
	then
	    OPTIONS="${OPTIONS} -e"
	fi

	if [ ! -z "${OPTIONS}" ]
	then
	    OPTIONS="-o "\'${OPTIONS}\'
	fi

	# Make sure that we don't get started if there is no options file.
	# We certainly don't want to get started if the executable is missing.
	if [ ! -x ${POSTMASTER} ]
	then
	    echo No postmaster executable for postgresql
	    exit 1
	fi

	if [ ! -d ${PGDATA} ]
	then
	    echo No readable database directory for postgresql
	    exit 1
	fi

	# Ready to go: stand clear...
	echo Starting PostgreSQL postmaster
        su postgres -c "${POSTMASTER} -b ${POSTGRES} ${BUFFERS} \
	    -D ${PGDATA} -S ${AUTH} ${DEBUGLEVEL} ${PORT} ${OPTIONS}"
}
. /etc/postgresql/postmaster.init

# --------------------------------------------------------------------------
# No user configurable parts below this line.
PGDATA=${POSTGRES_DATA:-/var/lib/postgresql/data}
PGLIB=/usr/lib/postgresql
export PGLIB PGDATA
POSTMASTER=${PGLIB}/bin/postmaster
POSTGRES=${PGLIB}/bin/postgres

if [ ! -d ${PGDATA}/base ]
then
	echo There is no PostgreSQL database framework in $PGDATA.
	echo Run initdb as the postgres user to create it
	exit
fi

case "$1" in
    start)
	startup
        ;;
    stop)
	echo Stopping PostgreSQL postmaster
        start-stop-daemon --stop --verbose --exec ${POSTMASTER}
        ;;
    restart)
	echo Restarting PostgreSQL postmaster
	start-stop-daemon --stop --verbose --exec ${POSTMASTER}
	startup
	;;
    force-reload)
	echo Reload not supported by PostgreSQL - restarting postmaster
	start-stop-daemon --stop --verbose --exec ${POSTMASTER}
	startup
	;;
    reload)
	echo PostgreSQL does not support a reload option
	exit 2
	;;
    *)
        echo "Usage: /etc/init.d/postgresql {start|stop|restart}"
        exit 1
esac

exit 0

