--- /etc/init.d/postgresql Tue Feb 12 02:07:47 2002 +++ postgresql.new Mon Feb 18 14:27:49 2002 @@ -62,4 +62,7 @@ . /etc/sysconfig/network +[ -f /etc/sysconfig/postgresql ] && . /etc/sysconfig/postgresql +export PGDATA + # Check that networking is up. # Pretty much need it for postmaster. @@ -68,14 +71,17 @@ [ -f /usr/bin/postmaster ] || exit 0 - start(){ PSQL_START=$"Starting postgresql service: " - - # Check for older PGDATA location. - if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ] + + # Check for PGDATA if not specified by /etc/sysconfig/postgresql. + if [ -z "$PGDATA" ] then export PGDATA=/var/lib/pgsql - else - export PGDATA=/var/lib/pgsql/data + if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base/template1 ] + then + echo "Using old-style directory structure" + else + export PGDATA=/var/lib/pgsql/data + fi fi @@ -126,4 +132,5 @@ mkdir -p $PGDATA chown postgres.postgres $PGDATA + chmod go-rwx $PGDATA fi # Make sure the locale from the initdb is preserved for later startups... @@ -134,5 +141,5 @@ echo "export LANG LC_ALL LC_CTYPE LC_COLLATE LC_NUMERIC LC_CTYPE LC_TIME" >> $PGDATA/../initdb.i18n # Initialize the database - su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=/var/lib/pgsql/data > /dev/null 2>&1" < /dev/null + su -l postgres -s /bin/sh -c "/usr/bin/initdb --pgdata=$PGDATA > /dev/null 2>&1" < /dev/null [ -f $PGDATA/PG_VERSION ] && echo_success [ ! -f $PGDATA/PG_VERSION ] && echo_failure @@ -177,11 +184,17 @@ stop(){ echo -n $"Stopping postgresql service: " - # Check for older PGDATA location. - if [ -f /var/lib/pgsql/PG_VERSION ] && [ -d /var/lib/pgsql/base/template1 ] - then - export PGDATA=/var/lib/pgsql - else - export PGDATA=/var/lib/pgsql/data - fi + + # Check for PGDATA if not specified in /etc/sysconfig/postgresql. + if [ -z "$PGDATA" ] + then + export PGDATA=/var/lib/pgsql + if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base/template1 ] + then + echo "Using old style directory structure" + else + export PGDATA=/var/lib/pgsql/data + fi + fi + su -l postgres -s /bin/sh -c "/usr/bin/pg_ctl stop -D $PGDATA -s -m fast" > /dev/null 2>&1 ret=$?