--- resources/OCF/pgsql.dist	2008-02-03 23:30:34.000000000 -0500
+++ resources/OCF/pgsql	2008-02-03 23:52:39.000000000 -0500
@@ -20,6 +20,9 @@
 #  OCF_RESKEY_pgdb   - database to monitor. Default is template1
 #  OCF_RESKEY_logfile - Path to PostgreSQL log file. Default is /dev/null
 #  OCF_RESKEY_stop_escalate - Stop waiting time. Default is 30
+#  OCF_RESKEY_status_pattern - Pattern for pgrep to check status
+#                              of the postgesql process if PID file
+#                              isn't readable
 ###############################################################################
 # Initialization:
 
@@ -134,6 +137,14 @@
 <shortdesc lang="en">stop escalation</shortdesc>
 <content type="string" default="30" />
 </parameter>
+<parameter name="status_pattern" unique="0" required="0">
+<longdesc lang="en">
+Pattern for pgrep to check status of PostgreSQL if PID file isn't readable
+</longdesc>
+<shortdesc lang="en">pattern for pgrep/shortdesc>
+<content type="string" default="postmaster|postgres" />
+</parameter>
+</parameters>
 </parameters>
 
 <actions>
@@ -267,7 +278,14 @@
 #
 
 pgsql_status() {
-     pgrep -u  $OCF_RESKEY_pgdba "postmaster|postgres" >/dev/null 2>&1
+     if [ -r $PIDFILE ]
+     then
+         PID=`head -n 1 $PIDFILE`
+         kill -0 $PID 1>/dev/null 2>&1
+         return $?
+     fi
+     
+     pgrep -u $OCF_RESKEY_pgdba -f "$OCF_RESKEY_status_pattern" >/dev/null 2>&1
 }
 
 #
@@ -355,9 +373,11 @@
 : ${OCF_RESKEY_pgdata=/var/lib/pgsql/data}
 : ${OCF_RESKEY_pgdba=postgres}
 : ${OCF_RESKEY_pgport=5432}
+: ${OCF_RESKEY_start_opt="-p $OCF_RESKEY_pgport"}
 : ${OCF_RESKEY_pgdb=template1}
 : ${OCF_RESKEY_logfile=/dev/null}
 : ${OCF_RESKEY_stop_escalate=30}
+: ${OCF_RESKEY_status_pattern="postmaster|postgres"}
 
 PIDFILE=${OCF_RESKEY_pgdata}/postmaster.pid
 
@@ -375,7 +395,6 @@
 
     monitor)    if ! pgsql_validate_all
                 then
-                   echo "Not running!"
                    exit $OCF_NOT_RUNNING
                 else
                    pgsql_monitor
