]> granicus.if.org Git - postgresql/commitdiff
Fix PGDATAOLD and PGDATANEW to properly set pgconfig location, per
authorBruce Momjian <bruce@momjian.us>
Fri, 6 Jul 2012 03:36:30 +0000 (23:36 -0400)
committerBruce Momjian <bruce@momjian.us>
Fri, 6 Jul 2012 03:36:43 +0000 (23:36 -0400)
report from Tom.

Backpatch to 9.2.

contrib/pg_upgrade/option.c

index 43394a0fb4a8e488459765c8c77ab65c796b6cc6..960fcdace7223a7082858fe8dd8509f0da119f17 100644 (file)
@@ -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",