summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorHeikki Linnakangas2014-05-05 13:07:40 +0000
committerHeikki Linnakangas2014-05-05 13:07:40 +0000
commita692ee5870f0f442565b4c4bff367094599e9bdf (patch)
treef682a4b38ca62109bc9be80642708637ab17ed15 /src/bin
parentd69ffd6f035fe24483247bf9b2335d7474eaf31a (diff)
Replace SYSTEMQUOTEs with Windows-specific wrapper functions.
It's easy to forget using SYSTEMQUOTEs when constructing command strings for system() or popen(). Even if we fix all the places missing it now, it is bound to be forgotten again in the future. Introduce wrapper functions that do the the extra quoting for you, and get rid of SYSTEMQUOTEs in all the callers. We previosly used SYSTEMQUOTEs in all the hard-coded command strings, and this doesn't change the behavior of those. But user-supplied commands, like archive_command, restore_command, COPY TO/FROM PROGRAM calls, as well as pgbench's \shell, will now gain an extra pair of quotes. That is desirable, but if you have existing scripts or config files that include an extra pair of quotes, those might need to be adjusted. Reviewed by Amit Kapila and Tom Lane
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/initdb/initdb.c40
-rw-r--r--src/bin/pg_ctl/pg_ctl.c14
-rw-r--r--src/bin/pg_dump/pg_dumpall.c4
-rw-r--r--src/bin/psql/command.c6
4 files changed, 31 insertions, 33 deletions
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index b53fa8bd088..83b7f6e24d8 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -1130,11 +1130,11 @@ test_config_settings(void)
test_buffs = MIN_BUFS_FOR_CONNS(test_conns);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" --boot -x0 %s "
+ "\"%s\" --boot -x0 %s "
"-c max_connections=%d "
"-c shared_buffers=%d "
"-c dynamic_shared_memory_type=none "
- "< \"%s\" > \"%s\" 2>&1" SYSTEMQUOTE,
+ "< \"%s\" > \"%s\" 2>&1",
backend_exec, boot_options,
test_conns, test_buffs,
DEVNULL, DEVNULL);
@@ -1165,11 +1165,11 @@ test_config_settings(void)
}
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" --boot -x0 %s "
+ "\"%s\" --boot -x0 %s "
"-c max_connections=%d "
"-c shared_buffers=%d "
"-c dynamic_shared_memory_type=none "
- "< \"%s\" > \"%s\" 2>&1" SYSTEMQUOTE,
+ "< \"%s\" > \"%s\" 2>&1",
backend_exec, boot_options,
n_connections, test_buffs,
DEVNULL, DEVNULL);
@@ -1503,7 +1503,7 @@ bootstrap_template1(void)
unsetenv("PGCLIENTENCODING");
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" --boot -x1 %s %s %s" SYSTEMQUOTE,
+ "\"%s\" --boot -x1 %s %s %s",
backend_exec,
data_checksums ? "-k" : "",
boot_options, talkargs);
@@ -1544,7 +1544,7 @@ setup_auth(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -1622,7 +1622,7 @@ get_set_pwd(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -1722,7 +1722,7 @@ setup_depend(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -1755,7 +1755,7 @@ setup_sysviews(void)
* We use -j here to avoid backslashing stuff in system_views.sql
*/
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s -j template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -1786,7 +1786,7 @@ setup_description(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -1893,7 +1893,7 @@ setup_collation(void)
#if defined(HAVE_LOCALE_T) && !defined(WIN32)
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2038,7 +2038,7 @@ setup_conversion(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2076,7 +2076,7 @@ setup_dictionary(void)
* We use -j here to avoid backslashing stuff
*/
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s -j template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2127,7 +2127,7 @@ setup_privileges(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2190,7 +2190,7 @@ setup_schema(void)
* We use -j here to avoid backslashing stuff in information_schema.sql
*/
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s -j template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s -j template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2207,7 +2207,7 @@ setup_schema(void)
PG_CMD_CLOSE;
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2241,7 +2241,7 @@ load_plpgsql(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2266,7 +2266,7 @@ vacuum_db(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2322,7 +2322,7 @@ make_template0(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
@@ -2354,7 +2354,7 @@ make_postgres(void)
fflush(stdout);
snprintf(cmd, sizeof(cmd),
- SYSTEMQUOTE "\"%s\" %s template1 >%s" SYSTEMQUOTE,
+ "\"%s\" %s template1 >%s",
backend_exec, backend_options,
DEVNULL);
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index fc87e7d76ed..473d6534064 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -435,11 +435,11 @@ start_postmaster(void)
* the PID without having to rely on reading it back from the pidfile.
*/
if (log_file != NULL)
- snprintf(cmd, MAXPGPATH, SYSTEMQUOTE "\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1 &",
exec_path, pgdata_opt, post_opts,
DEVNULL, log_file);
else
- snprintf(cmd, MAXPGPATH, SYSTEMQUOTE "\"%s\" %s%s < \"%s\" 2>&1 &" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "\"%s\" %s%s < \"%s\" 2>&1 &",
exec_path, pgdata_opt, post_opts, DEVNULL);
return system(cmd);
@@ -453,10 +453,10 @@ start_postmaster(void)
PROCESS_INFORMATION pi;
if (log_file != NULL)
- snprintf(cmd, MAXPGPATH, "CMD /C " SYSTEMQUOTE "\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "CMD /C \"\"%s\" %s%s < \"%s\" >> \"%s\" 2>&1\"",
exec_path, pgdata_opt, post_opts, DEVNULL, log_file);
else
- snprintf(cmd, MAXPGPATH, "CMD /C " SYSTEMQUOTE "\"%s\" %s%s < \"%s\" 2>&1" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "CMD /C \"\"%s\" %s%s < \"%s\" 2>&1\"",
exec_path, pgdata_opt, post_opts, DEVNULL);
if (!CreateRestrictedProcess(cmd, &pi, false))
@@ -814,10 +814,10 @@ do_init(void)
post_opts = "";
if (!silent_mode)
- snprintf(cmd, MAXPGPATH, SYSTEMQUOTE "\"%s\" %s%s" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "\"%s\" %s%s",
exec_path, pgdata_opt, post_opts);
else
- snprintf(cmd, MAXPGPATH, SYSTEMQUOTE "\"%s\" %s%s > \"%s\"" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "\"%s\" %s%s > \"%s\"",
exec_path, pgdata_opt, post_opts, DEVNULL);
if (system(cmd) != 0)
@@ -2035,7 +2035,7 @@ adjust_data_dir(void)
my_exec_path = pg_strdup(exec_path);
/* it's important for -C to be the first option, see main.c */
- snprintf(cmd, MAXPGPATH, SYSTEMQUOTE "\"%s\" -C data_directory %s%s" SYSTEMQUOTE,
+ snprintf(cmd, MAXPGPATH, "\"%s\" -C data_directory %s%s",
my_exec_path,
pgdata_opt ? pgdata_opt : "",
post_opts ? post_opts : "");
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 47fe6ccc07f..208e49bbcd0 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -1666,7 +1666,7 @@ runPgDump(const char *dbname)
PQExpBuffer cmd = createPQExpBuffer();
int ret;
- appendPQExpBuffer(cmd, SYSTEMQUOTE "\"%s\" %s", pg_dump_bin,
+ appendPQExpBuffer(cmd, "\"%s\" %s", pg_dump_bin,
pgdumpopts->data);
/*
@@ -1687,8 +1687,6 @@ runPgDump(const char *dbname)
doShellQuoting(cmd, connstrbuf->data);
- appendPQExpBufferStr(cmd, SYSTEMQUOTE);
-
if (verbose)
fprintf(stderr, _("%s: running \"%s\"\n"), progname, cmd->data);
diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index fd64ba824f1..dabcd680fff 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -1936,10 +1936,10 @@ editFile(const char *fname, int lineno)
editorName, fname);
#else
if (lineno > 0)
- sys = psprintf(SYSTEMQUOTE "\"%s\" %s%d \"%s\"" SYSTEMQUOTE,
+ sys = psprintf("\"%s\" %s%d \"%s\"",
editorName, editor_lineno_arg, lineno, fname);
else
- sys = psprintf(SYSTEMQUOTE "\"%s\" \"%s\"" SYSTEMQUOTE,
+ sys = psprintf("\"%s\" \"%s\"",
editorName, fname);
#endif
result = system(sys);
@@ -2643,7 +2643,7 @@ do_shell(const char *command)
#ifndef WIN32
sys = psprintf("exec %s", shellName);
#else
- sys = psprintf(SYSTEMQUOTE "\"%s\"" SYSTEMQUOTE, shellName);
+ sys = psprintf("\"%s\"", shellName);
#endif
result = system(sys);
free(sys);