correct postgresql.init to newer conventions
authorTim Yardley <lst@openwrt.org>
Thu, 7 Jun 2007 15:32:21 +0000 (15:32 +0000)
committerTim Yardley <lst@openwrt.org>
Thu, 7 Jun 2007 15:32:21 +0000 (15:32 +0000)
SVN-Revision: 7518

libs/postgresql/files/postgresql.init

index be29f16151068767ca6ad7ce5a6b84f0608a9b2e..a678dc678de2788e3af8b1bff6d5b2c6efa0fa13 100755 (executable)
@@ -2,29 +2,38 @@
 # Copyright (C) 2006 OpenWrt.org
 START=50
 
+config_load "postgresql"
+config_get pgdata config PGDATA
+config_get pguser config PGUSER
+config_get pgctl config PG_CTL
+
 start() {
-    config_load "postgresql"
     if [ ! -e /bin/su ]; then
         echo "The su command is requred to run postgres"
         exit 1
     fi
-    config_get pgdata config PGDATA
 
     if [ ! -d ${pgdata} ]; then
         echo "Create the data directory (${pgdata}) and try again"
         exit 1
     fi
 
+    # make sure localhost (without a dot) is in /etc/hosts
+    grep -q 'localhost$' /etc/hosts || echo '127.0.0.1 localhost' >> /etc/hosts
+
+    # for whatever reason, /dev/null gets wrong perms
+    chmod a+w /dev/null
+
     if [ -f ${pgdata}/postmaster.pid ]; then
         rm ${pgdata}/postmaster.pid
     fi
 
-    config_get pguser config PGUSER
     config_get pglog config PGLOG
-    config_get pgctl config PG_CTL
     config_get pgopts config PGOPTS
-
-    /bin/su - ${pguser} -c "${pgctl} start -D '${pgdata}' -s -l '${pglog}' -o '${pgopts}'"
+    if [ -n "${pgopts}" ]; then
+        pgopts="-o ${pgopts}"
+    fi
+    /bin/su ${pguser} -c "${pgctl} start -D ${pgdata} -s -l ${pglog} ${pgopts}"
 
     while :
     do
@@ -32,7 +41,7 @@ start() {
         if [ -f "${pgdata}/postmaster.pid" ]; then
             ret=0
             break
-        fi
+       fi
 
         if [ ${cnt} -eq 30 ]; then
             echo "Postgres failed to start.  See ${pglog} for details"
@@ -44,3 +53,9 @@ start() {
 
     return ${ret}
 }
+
+stop() {
+
+    /bin/su ${pguser} -c "${pgctl} stop -D '${pgdata}'"
+    return $?
+}