aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/pg_upgrade/option.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c
index 43394a0fb4a..960fcdace72 100644
--- a/contrib/pg_upgrade/option.c
+++ b/contrib/pg_upgrade/option.c
@@ -21,7 +21,7 @@
static void usage(void);
-static void check_required_directory(char **dirpath,
+static void check_required_directory(char **dirpath, char **configpath,
char *envVarName, char *cmdLineOption, char *description);
@@ -203,14 +203,14 @@ parseCommandLine(int argc, char *argv[])
}
/* Get values from env if not already set */
- check_required_directory(&old_cluster.bindir, "PGBINOLD", "-b",
+ check_required_directory(&old_cluster.bindir, NULL, "PGBINOLD", "-b",
"old cluster binaries reside");
- check_required_directory(&new_cluster.bindir, "PGBINNEW", "-B",
+ check_required_directory(&new_cluster.bindir, NULL, "PGBINNEW", "-B",
"new cluster binaries reside");
- check_required_directory(&old_cluster.pgdata, "PGDATAOLD", "-d",
- "old cluster data resides");
- check_required_directory(&new_cluster.pgdata, "PGDATANEW", "-D",
- "new cluster data resides");
+ check_required_directory(&old_cluster.pgdata, &old_cluster.pgconfig,
+ "PGDATAOLD", "-d", "old cluster data resides");
+ check_required_directory(&new_cluster.pgdata, &new_cluster.pgconfig,
+ "PGDATANEW", "-D", "new cluster data resides");
}
@@ -284,15 +284,20 @@ or\n"), old_cluster.port, new_cluster.port, os_info.user);
* user hasn't provided the required directory name.
*/
static void
-check_required_directory(char **dirpath, char *envVarName,
- char *cmdLineOption, char *description)
+check_required_directory(char **dirpath, char **configpath,
+ char *envVarName, char *cmdLineOption,
+ char *description)
{
if (*dirpath == NULL || strlen(*dirpath) == 0)
{
const char *envVar;
if ((envVar = getenv(envVarName)) && strlen(envVar))
+ {
*dirpath = pg_strdup(envVar);
+ if (configpath)
+ *configpath = pg_strdup(envVar);
+ }
else
pg_log(PG_FATAL, "You must identify the directory where the %s.\n"
"Please use the %s command-line option or the %s environment variable.\n",