Make sure that the postmaster options (from postmaster.opts[.default] or
authorPeter Eisentraut
Sat, 21 Apr 2001 11:23:58 +0000 (11:23 +0000)
committerPeter Eisentraut
Sat, 21 Apr 2001 11:23:58 +0000 (11:23 +0000)
-o option) are properly dequoted.  Also, always pass an explicit -D option
to postmaster, don't rely on it being set in postmaster.opts.

src/bin/pg_ctl/pg_ctl.sh

index dc3a6282521e51ee5449ab031aed8354e9d919b3..abc06b8d3f34439796e7363514e48b9320212753 100755 (executable)
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.19 2001/03/18 20:27:11 tgl Exp $
+#    $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.20 2001/04/21 11:23:58 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -299,37 +299,33 @@ if [ $op = "start" -o $op = "restart" ];then
    oldpid=`sed -n 1p $PIDFILE`
     fi
 
-    unset logopt
-    if [ -n "$logfile" ]; then
-        logopt='>$logfile 2>&1'
-    else
-        # when starting without log file, redirect stderr to stdout, so
-        # pg_ctl can be invoked with >$logfile and still have pg_ctl's
-        # stderr on the terminal.
-        logopt='&1'
-    fi
-
     # no -o given
     if [ -z "$POSTOPTS" ];then
    if [ $op = "start" ];then
        # if we are in start mode, then look for postmaster.opts.default
        if [ -f $DEFPOSTOPTS ]; then
-       POSTOPTS=`cat $DEFPOSTOPTS`
+       eval set X "`cat $DEFPOSTOPTS`"; shift
        fi
-       POSTOPTS="-D $PGDATA $POSTOPTS"
    else
        # if we are in restart mode, then look for postmaster.opts
-       set X `cat $POSTOPTSFILE`
-       shift
+       eval set X "`cat $POSTOPTSFILE`"; shift
             po_path=$1
             shift
-       POSTOPTS=$@
    fi
     else # -o given
-        POSTOPTS="-D $PGDATA $POSTOPTS"
+        eval set X "$POSTOPTS"; shift
     fi
 
-    eval '$po_path' '$POSTOPTS' $logopt '&'
+    set X -D "$PGDATA" ${1+"$@"}; shift
+
+    if [ -n "$logfile" ]; then
+        "$po_path" "$@" >$logfile 2>&1 &
+    else
+        # when starting without log file, redirect stderr to stdout, so
+        # pg_ctl can be invoked with >$logfile and still have pg_ctl's
+        # stderr on the terminal.
+        "$po_path" "$@" &1 &
+    fi
 
     # if had an old lockfile, check to see if we were able to start
     if [ -n "$oldpid" ];then