#!/sbin/runscript opts="${opts} reload" depend() { use net } checkconfig() { if [ ! -d "$PGDATA" ] ; then eerror "Directory not found: $PGDATA" eerror "Please make sure that PGDATA points to the right path." eerror "You can run 'emerge postgresql --config' to setup a new database cluster." return 1 fi } start() { checkconfig || return 1 ebegin "Starting PostgreSQL" if [ -f "$PGDATA/postmaster.pid" ] ; then rm -f "$PGDATA/postmaster.pid" fi local env_vars for var in ${!ENV_*} ; do env_vars="${env_vars} -e ${!var}" ; done start-stop-daemon --start \ --pidfile "${PGDATA}/postmaster.pid" \ --chuid ${PGUSER}:${PGGROUP} \ --exec /usr/bin/postmaster \ ${env_vars} -- \ -D "${PGDATA}" \ --silent-mode=true \ ${PGOPTS} eend $? } stop() { ebegin "Stopping PostgreSQL" # Note: we have to do --oknodo here, otherwise it will always fail # when there are open transactions. This bug has been corrected # in baselayout-1.13.0_alpha8. start-stop-daemon --stop --pidfile "${PGDATA}/postmaster.pid" \ --retry -TERM/${WAIT_FOR_DISCONNECT}/-INT/${WAIT_FOR_CLEANUP}/-QUIT --oknodo eend $? } reload() { ebegin "Reloading PostgreSQL configuration" start-stop-daemon --stop --pidfile "${PGDATA}/postmaster.pid" --signal HUP --oknodo eend $? }