aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tcop/postgres.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r--src/backend/tcop/postgres.c38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 631f482e81a..9209b6509f2 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.160 2000/06/15 04:10:19 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.161 2000/06/22 22:31:20 petere Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
@@ -824,13 +824,15 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
/*
* Set default values for command-line options.
*/
- IsUnderPostmaster = false;
Noversion = false;
EchoQuery = false;
-#ifdef LOCK_MGR_DEBUG
- LockDebug = 0;
-#endif
- DataDir = getenv("PGDATA");
+
+ if (!IsUnderPostmaster)
+ {
+ ResetAllOptions();
+ if (getenv("PGDATA"))
+ DataDir = strdup(getenv("PGDATA"));
+ }
StatFp = stderr;
SetProcessingMode(InitProcessing);
@@ -891,7 +893,11 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
case 'D': /* PGDATA directory */
if (secure)
- DataDir = optarg;
+ {
+ if (DataDir)
+ free(DataDir);
+ DataDir = strdup(optarg);
+ }
break;
case 'd': /* debug level */
@@ -1022,8 +1028,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
*/
if (secure)
{
- IsUnderPostmaster = true;
- DBName = optarg;
+ DBName = strdup(optarg);
secure = false; /* subsequent switches are NOT
* secure */
}
@@ -1171,12 +1176,6 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
}
/*
- * Make a copy of DataDir because the arguments and environment
- * might be moved around later on.
- */
- DataDir = strdup(DataDir);
-
- /*
* 1. Set BlockSig and UnBlockSig masks. 2. Set up signal handlers. 3.
* Allow only SIGUSR1 signal (we never block it) during
* initialization.
@@ -1330,7 +1329,12 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
/*
- * Set process params for ps
+ * Set process parameters for ps
+ *
+ * WARNING: On some platforms the environment will be moved
+ * around to make room for the ps display string. So any
+ * references to optarg or getenv() from above will be invalid
+ * after this call. Better use strdup or something similar.
*/
init_ps_display(real_argc, real_argv, userName, DBName, remote_host);
set_ps_display("startup");
@@ -1382,7 +1386,7 @@ PostgresMain(int argc, char *argv[], int real_argc, char *real_argv[])
if (!IsUnderPostmaster)
{
puts("\nPOSTGRES backend interactive interface ");
- puts("$Revision: 1.160 $ $Date: 2000/06/15 04:10:19 $\n");
+ puts("$Revision: 1.161 $ $Date: 2000/06/22 22:31:20 $\n");
}
/*