summaryrefslogtreecommitdiff
path: root/src/backend/postmaster
diff options
context:
space:
mode:
authorPeter Eisentraut2000-11-04 12:43:24 +0000
committerPeter Eisentraut2000-11-04 12:43:24 +0000
commitabfb41757405b74e175fb8e6bf632b270de523dc (patch)
tree38588ff3cabe9886efb2e8cd4cc927a1b2a7f792 /src/backend/postmaster
parent7bea44f449bc3ac8090e5ad3fe027e54cb6297b3 (diff)
Make the backend grok relative paths for the data directory by converting
it to an absolute path.
Diffstat (limited to 'src/backend/postmaster')
-rw-r--r--src/backend/postmaster/postmaster.c28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index eb7daeb7dbe..060b0e5ef40 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.177 2000/11/01 21:14:02 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.178 2000/11/04 12:43:23 petere Exp $
*
* NOTES
*
@@ -268,12 +268,12 @@ extern void GetCharSetByHost(char *, int, char *);
static void
-checkDataDir(const char *DataDir)
+checkDataDir(const char *checkdir)
{
char path[MAXPGPATH];
FILE *fp;
- if (DataDir == NULL)
+ if (checkdir == NULL)
{
fprintf(stderr, "%s does not know where to find the database system "
"data. You must specify the directory that contains the "
@@ -285,10 +285,10 @@ checkDataDir(const char *DataDir)
#ifdef OLD_FILE_NAMING
snprintf(path, sizeof(path), "%s%cbase%ctemplate1%cpg_class",
- DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
+ checkdir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
#else
snprintf(path, sizeof(path), "%s%cbase%c%u%c%u",
- DataDir, SEP_CHAR, SEP_CHAR,
+ checkdir, SEP_CHAR, SEP_CHAR,
TemplateDbOid, SEP_CHAR, RelOid_pg_class);
#endif
@@ -298,13 +298,13 @@ checkDataDir(const char *DataDir)
fprintf(stderr, "%s does not find the database system."
"\n\tExpected to find it in the PGDATA directory \"%s\","
"\n\tbut unable to open file \"%s\": %s\n\n",
- progname, DataDir, path, strerror(errno));
+ progname, checkdir, path, strerror(errno));
exit(2);
}
FreeFile(fp);
- ValidatePgVersion(DataDir);
+ ValidatePgVersion(checkdir);
}
@@ -314,6 +314,7 @@ PostmasterMain(int argc, char *argv[])
int opt;
int status;
char original_extraoptions[MAXPGPATH];
+ char *potential_DataDir = NULL;
IsUnderPostmaster = true; /* so that backends know this */
@@ -353,8 +354,7 @@ PostmasterMain(int argc, char *argv[])
/*
* Options setup
*/
- if (getenv("PGDATA"))
- DataDir = strdup(getenv("PGDATA")); /* default value */
+ potential_DataDir = getenv("PGDATA"); /* default value */
ResetAllOptions();
@@ -377,9 +377,7 @@ PostmasterMain(int argc, char *argv[])
switch(opt)
{
case 'D':
- if (DataDir)
- free(DataDir);
- DataDir = strdup(optarg);
+ potential_DataDir = optarg;
break;
case '-':
@@ -415,12 +413,14 @@ PostmasterMain(int argc, char *argv[])
}
}
- optind = 1; /* start over */
- checkDataDir(DataDir); /* issues error messages */
+ checkDataDir(potential_DataDir); /* issues error messages */
+ SetDataDir(potential_DataDir);
ProcessConfigFile(PGC_POSTMASTER);
IgnoreSystemIndexes(false);
+
+ optind = 1; /* start over */
while ((opt = getopt(argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:?")) != EOF)
{
switch (opt)