From 2eeb5eb23fa9ad1a2d636bbf2fd68e6709848d23 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 5 Jul 2012 23:36:30 -0400 Subject: [PATCH] Fix PGDATAOLD and PGDATANEW to properly set pgconfig location, per report from Tom. Backpatch to 9.2. --- contrib/pg_upgrade/option.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c index 43394a0fb4..960fcdace7 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", -- 2.40.0