]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix 'pg_ctl reload' to properly preserve postmaster commend-line
authorBruce Momjian <bruce@momjian.us>
Fri, 27 Jun 2008 01:53:20 +0000 (01:53 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 27 Jun 2008 01:53:20 +0000 (01:53 +0000)
arguments on restart.  Patch to releases 8.0 - 8.3.X.

src/backend/postmaster/postmaster.c
src/bin/pg_ctl/pg_ctl.c

index 876b106380226a78974203fd3a9f175142b3f710..9d86462f89e2e0d1a8304d897b04f42e04bd0746 100644 (file)
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.505.2.5 2007/08/02 23:17:20 adunstan Exp $
+ *       $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.505.2.6 2008/06/27 01:53:20 momjian Exp $
  *
  * NOTES
  *
@@ -3762,7 +3762,7 @@ CreateOptsFile(int argc, char *argv[], char *fullprogname)
 
        fprintf(fp, "%s", fullprogname);
        for (i = 1; i < argc; i++)
-               fprintf(fp, " %s%s%s", SYSTEMQUOTE, argv[i], SYSTEMQUOTE);
+               fprintf(fp, " \"%s\"", argv[i]);
        fputs("\n", fp);
 
        if (fclose(fp))
index 4ce60e7cda87428f692376c87134206b10c85462..ebcbbc7094bba4241c3350deee8aa20558d4e915 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.74.2.4 2008/02/29 23:31:57 adunstan Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.74.2.5 2008/06/27 01:53:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -578,15 +578,18 @@ read_post_opts(void)
                        {
                                char       *arg1;
 
-                               arg1 = strchr(optline, *SYSTEMQUOTE);
-                               if (arg1 == NULL || arg1 == optline)
-                                       post_opts = "";
-                               else
+                               /*
+                                * Are we at the first option, as defined by space and
+                                * double-quote?
+                                */
+                               if ((arg1 = strstr(optline, " \"")) != NULL ||
+                                       /* check in case this is an older server */
+                                   (arg1 = strstr(optline, " -")) != NULL)
                                {
-                                       *(arg1 - 1) = '\0'; /* this should be a space */
-                                       post_opts = arg1;
+                                       *arg1 = '\0';   /* terminate so we get only program name */
+                                       post_opts = arg1 + 1; /* point past whitespace */
                                }
-                               if (postgres_path != NULL)
+                               if (postgres_path == NULL)
                                        postgres_path = optline;
                        }
                        else