summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian2008-06-27 01:52:58 +0000
committerBruce Momjian2008-06-27 01:52:58 +0000
commit0e69ff3399630bfeda9150a85527e9fab2e3c439 (patch)
tree86e3732599311061088aedacacee7854fc0e316c /src
parentbd80180e1d2880d4e92fcdb354964b2e456f8fce (diff)
Fix 'pg_ctl reload' to properly preserve postmaster commend-line
arguments on restart. Patch to releases 8.0 - 8.3.X.
Diffstat (limited to 'src')
-rw-r--r--src/backend/postmaster/postmaster.c4
-rw-r--r--src/bin/pg_ctl/pg_ctl.c19
2 files changed, 13 insertions, 10 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index 4a56f4ecf3b..1d491b8b317 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.443.4.10 2007/08/02 23:20:22 adunstan Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.443.4.11 2008/06/27 01:52:58 momjian Exp $
*
* NOTES
*
@@ -3655,7 +3655,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))
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 6ad31f099f9..12c230e3837 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -4,7 +4,7 @@
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.53.4.5 2008/02/20 22:18:41 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.53.4.6 2008/06/27 01:52:58 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -535,15 +535,18 @@ do_start(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