@@ -0,0 +1,193 @@
+#!/bin/sh
+# Copyright (c) 1995-2004 SUSE Linux AG, Nuernberg, Germany.
+# All rights reserved.
+#
+# Author: Kurt Garloff
+# Please send feedback to http://www.suse.de/feedback/
+#
+# /etc/init.d/postgresql
+# and its symbolic link
+# /(usr/)sbin/rcpostgresql
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+# System startup script for PostgreSQL
+#
+# LSB compatible service control script; see http://www.linuxbase.org/spec/
+#
+### BEGIN INIT INFO
+# Provides: postgresql
+# Required-Start: $network $remote_fs
+# Required-Stop: $network $remote_fs
+# Default-Start: 3 5
+# Default-Stop:
+# Description: Start the PostgreSQL master daemon
+### END INIT INFO
+
+# Source SuSE config
+PG_SYSCONFIG=/etc/sysconfig/postgresql
+test -f $PG_SYSCONFIG && . $PG_SYSCONFIG
+
+# Shell functions sourced from /etc/rc.status:
+# rc_check check and set local and overall rc status
+# rc_status check and set local and overall rc status
+# rc_status -v ditto but be verbose in local rc status
+# rc_status -v -r ditto and clear the local rc status
+# rc_failed set local and overall rc status to failed
+# rc_reset clear local rc status (overall remains)
+# rc_exit exit appropriate to overall rc status
+. /etc/rc.status
+
+eval DATADIR=${POSTGRES_DATADIR:-~postgres/data}
+OPTIONS=${POSTGRES_OPTIONS}
+H=/usr/bin/postmaster
+test -x $H || exit 5
+PIDFILE=$DATADIR/postmaster.pid
+
+if [ -r $DATADIR/PG_VERSION ] ; then
+ BIN_VERSION=$($H --version|sed 's/.* \([0-9]\+\.[0-9]\+\).*/\1/')
+ DATA_VERSION=$(cat $DATADIR/PG_VERSION)
+ if [ "$BIN_VERSION" != "$DATA_VERSION" ]; then
+ for libdir in /usr/lib64 /usr/lib; do
+ H=$libdir/postgresql/backup/$DATA_VERSION/postmaster
+ test -x $H && break
+ done
+ if test -x $H; then
+ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$libdir/postgresql/backup"
+ echo " Your databases are still using the format of PostgreSQL $DATA_VERSION."
+ echo " Therefore a backup of the old PostgreSQL server program will be used"
+ echo " until you have saved and removed your old database files"
+ echo " See also /usr/share/doc/packages/postgresql/README.SuSE.{de,en} ."
+ else
+ echo " Your databases are still using the format of PostgreSQL $DATA_VERSION,"
+ echo " but no backup of the old PostgreSQL server program was found."
+ echo " See /usr/share/doc/packages/postgresql/README.SuSE.{en,de}"
+ echo " for details on updating PostgeSQL."
+ exit 5
+ fi
+ fi
+fi
+
+# The echo return value for success (defined in /etc/rc.config).
+rc_reset
+
+# Return values acc. to LSB for all commands but status:
+# 0 - success
+# 1 - generic or unspecified error
+# 2 - invalid or excess argument(s)
+# 3 - unimplemented feature (e.g. "reload")
+# 4 - insufficient privilege
+# 5 - program is not installed
+# 6 - program is not configured
+# 7 - program is not running
+#
+# Note that starting an already running service, stopping
+# or restarting a not-running service as well as the restart
+# with force-reload (in case signalling is not supported) are
+# considered a success.
+
+pg_ctl () {
+ CMD="/usr/bin/pg_ctl $@"
+ su - postgres -c "LD_LIBRARY_PATH=$LD_LIBRARY_PATH $CMD"
+}
+
+case "$1" in
+ start)
+ if [ ! -f $DATADIR/PG_VERSION ]; then
+ echo -n "Initializing the PostgreSQL database at location ${DATADIR}"
+ LANG_SYSCONFIG=/etc/sysconfig/language
+ test -f "$LANG_SYSCONFIG" && . $LANG_SYSCONFIG
+ LANG=${POSTGRES_LANG:-$RC_LANG}
+ INITDB=/usr/bin/initdb
+ install -d -o postgres -g postgres -m 700 ${DATADIR} && su - postgres -c \
+ "$INITDB --locale=$LANG --auth=\"ident sameuser\" $DATADIR &> initlog" ||
+ rc_failed
+ rc_status -v
+ rc_status || {
+ echo "You can find a log of the initialisation in ~postgres/initlog ."
+ rc_exit
+ }
+ fi
+ echo -n "Starting PostgreSQL"
+ ## remove old socket, if it exists and no daemon is running.
+ checkproc -p $PIDFILE $H || {
+ rm -f /tmp/.s.PGSQL.5432 $PIDFILE
+ }
+
+ ## Start daemon with startproc(8). If this fails
+ ## the echo return value is set appropriate.
+ pg_ctl start -s -w -p $H -D $DATADIR -o "\"$OPTIONS\""
+ rc_status -v
+ ;;
+
+ stop)
+ echo -n "Shutting down PostgreSQL"
+ ## Stop daemon with killproc(8) and if this fails
+ ## set the echo return value.
+
+ pg_ctl stop -s -D $DATADIR -m fast
+ rc_status -v
+ ;;
+
+ try-restart)
+ ## Stop the service and if this succeeds (i.e. the
+ ## service was running before), start it again.
+ ## Note: try-restart is not (yet) part of LSB (as of 0.7.5)
+ $0 status && $0 restart
+ ;;
+
+ restart)
+ ## Stop the service and regardless of whether it was
+ ## running or not, start it again.
+ $0 stop
+ $0 start
+ rc_status
+ ;;
+
+ force-reload | reload)
+ echo -n "Reloading configuration for PostgreSQL"
+ pg_ctl reload -s -D $DATADIR
+ rc_status -v
+ ;;
+
+ status)
+ echo -n "Checking for PostgreSQL: "
+ ## Check status with checkproc(8), if process is running
+ ## checkproc will return with exit status 0.
+
+ # Status has a slightly different for the status command:
+ # 0 - service running
+ # 1 - service dead, but /var/run/ pid file exists
+ # 2 - service dead, but /var/lock/ lock file exists
+ # 3 - service not running
+
+ # NOTE: checkproc returns LSB compliant status values.
+ checkproc -p $PIDFILE $H
+ rc_status -v
+ ;;
+
+ probe)
+ rc_failed 3
+ rc_status -v
+ ;;
+
+ *)
+ echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}"
+ exit 1
+ ;;
+esac
+
+# Inform the caller not only verbosely and set an exit status.
+rc_exit
|