#! /bin/sh
# postgresql	This is the init script for starting up the PostgreSQL
#		server

# chkconfig: 345 85 15
# description: Starts and stops the PostgreSQL backend daemon that handles \
#	       all database requests.
# processname: postmaster
# pidfile: /var/run/postmaster.pid
#

# Source function library.
. /etc/rc.d/init.d/functions

# Get config.
. /etc/sysconfig/network

# Check that networking is up.
# Pretty much need it for postmaster.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/bin/postmaster ] || exit 0

# This script is slightly unusual in that the name of the daemon (postmaster)
# is not the same as the name of the subsystem (postgresql)

# See how we were called.
case "$1" in
  start)
	echo -n "Checking postgresql installation: "
	# Check for the PGDATA structure
	if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ]
	then
	# Check version of existing PGDATA

		if [ `cat /var/lib/pgsql/PG_VERSION` != '6.5' ]
		then
			echo "old version. Need to Upgrade."
			echo "See /usr/doc/postgresql-6.5.2/README.rpm for more information."
			exit 1
		else
			echo "looks good!"
		fi

	# No existing PGDATA! Initdb it.

	else
		echo "no database files found."
                if [ ! -d /var/lib/pgsql ]
		then
			mkdir -p /var/lib/pgsql
			chown postgres.postgres /var/lib/pgsql
		fi
		su -l postgres -c '/usr/bin/initdb --pglib=/usr/lib/pgsql --pgdata=/var/lib/pgsql'
	fi

	# Check for postmaster already running...
	pid=`pidof postmaster`
	if [ $pid ]
	then
		echo "Postmaster already running."
	else
		#all systems go -- remove any stale lock files
		rm -f /tmp/.s.PGSQL.* > /dev/null
		echo -n "Starting postgresql service: "
		su -l postgres -c '/usr/bin/postmaster -i -S -D/var/lib/pgsql'
		sleep 1
		pid=`pidof postmaster`
		if [ $pid ]
		then
			echo -n "postmaster [$pid]"
			touch /var/lock/subsys/postgresql
			echo $pid > /var/run/postmaster.pid
			echo
		else
			echo "failed."
		fi
	fi
	;;
  stop)
	echo -n "Stopping postgresql service: "
	killproc postmaster
	sleep 2
	rm -f /var/run/postmaster.pid
	rm -f /var/lock/subsys/postgresql
	echo
	;;
  status)
	status postmaster
	;;
  restart)
	$0 stop
	$0 start
	;;
  *)
	echo "Usage: postgresql {start|stop|status|restart}"
	exit 1
esac

exit 0
