Add missing SYSTEMQUOTEs
authorHeikki Linnakangas
Wed, 30 Apr 2014 07:34:15 +0000 (10:34 +0300)
committerHeikki Linnakangas
Wed, 30 Apr 2014 07:35:46 +0000 (10:35 +0300)
Some popen() calls were missing SYSTEMQUOTEs, which caused initdb and
pg_upgrade to fail on Windows, if the installation path contained both
spaces and @ signs.

Patch by Nikhil Deshpande. Backpatch to all supported versions.

contrib/pg_upgrade/check.c
src/bin/initdb/initdb.c

index bacd41e0757289de087af5b5e45f65918049bbac..794d22cb7f1334c3530f68f96fcd455dc5ecd03e 100644 (file)
@@ -961,7 +961,7 @@ get_bin_version(ClusterInfo *cluster)
    int         pre_dot,
                post_dot;
 
-   snprintf(cmd, sizeof(cmd), "\"%s/pg_ctl\" --version", cluster->bindir);
+   snprintf(cmd, sizeof(cmd), SYSTEMQUOTE "\"%s/pg_ctl\" --version" SYSTEMQUOTE, cluster->bindir);
 
    if ((output = popen(cmd, "r")) == NULL ||
        fgets(cmd_output, sizeof(cmd_output), output) == NULL)
index 0d867bba135d20a3678678cd49c4c2f8536a1ca8..45c44536b902d7df535e136cef9cfe21a05d7b78 100644 (file)
@@ -1445,7 +1445,7 @@ bootstrap_template1(void)
    unsetenv("PGCLIENTENCODING");
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" --boot -x1 %s %s %s",
+            SYSTEMQUOTE "\"%s\" --boot -x1 %s %s %s" SYSTEMQUOTE,
             backend_exec,
             data_checksums ? "-k" : "",
             boot_options, talkargs);
@@ -1486,7 +1486,7 @@ setup_auth(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1564,7 +1564,7 @@ get_set_pwd(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1664,7 +1664,7 @@ setup_depend(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1697,7 +1697,7 @@ setup_sysviews(void)
     * We use -j here to avoid backslashing stuff in system_views.sql
     */
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s -j template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1728,7 +1728,7 @@ setup_description(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1835,7 +1835,7 @@ setup_collation(void)
 
 #if defined(HAVE_LOCALE_T) && !defined(WIN32)
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -1974,7 +1974,7 @@ setup_conversion(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2012,7 +2012,7 @@ setup_dictionary(void)
     * We use -j here to avoid backslashing stuff
     */
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s -j template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2063,7 +2063,7 @@ setup_privileges(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2126,7 +2126,7 @@ setup_schema(void)
     * We use -j here to avoid backslashing stuff in information_schema.sql
     */
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s -j template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2143,7 +2143,7 @@ setup_schema(void)
    PG_CMD_CLOSE;
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2177,7 +2177,7 @@ load_plpgsql(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2202,7 +2202,7 @@ vacuum_db(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2258,7 +2258,7 @@ make_template0(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);
 
@@ -2290,7 +2290,7 @@ make_postgres(void)
    fflush(stdout);
 
    snprintf(cmd, sizeof(cmd),
-            "\"%s\" %s template1 >%s",
+            SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
             backend_exec, backend_options,
             DEVNULL);