Commit ebe30ad5 authored by Bruce Momjian's avatar Bruce Momjian

pg_ctl, pg_upgrade: allow multiple -o/-O options, append them

Report by Pavel Raiskup
parent bf1c8665
......@@ -137,17 +137,35 @@ parseCommandLine(int argc, char *argv[])
break;
case 'o':
old_cluster.pgopts = pg_strdup(optarg);
/* append option? */
if (!old_cluster.pgopts)
old_cluster.pgopts = pg_strdup(optarg);
else
{
char *old_pgopts = old_cluster.pgopts;
old_cluster.pgopts = psprintf("%s %s", old_pgopts, optarg);
free(old_pgopts);
}
break;
case 'O':
new_cluster.pgopts = pg_strdup(optarg);
/* append option? */
if (!new_cluster.pgopts)
new_cluster.pgopts = pg_strdup(optarg);
else
{
char *new_pgopts = new_cluster.pgopts;
new_cluster.pgopts = psprintf("%s %s", new_pgopts, optarg);
free(new_pgopts);
}
break;
/*
* Someday, the port number option could be removed and passed
* using -o/-O, but that requires postmaster -C to be
* supported on all old/new versions.
* supported on all old/new versions (added in PG 9.2).
*/
case 'p':
if ((old_cluster.port = atoi(optarg)) <= 0)
......
......@@ -130,14 +130,16 @@
<term><option>-o</option> <replaceable class="parameter">options</replaceable></term>
<term><option>--old-options</option> <replaceable class="parameter">options</replaceable></term>
<listitem><para>options to be passed directly to the
old <command>postgres</command> command</para></listitem>
old <command>postgres</command> command; multiple
option invocations are appended</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-O</option> <replaceable class="parameter">options</replaceable></term>
<term><option>--new-options</option> <replaceable class="parameter">options</replaceable></term>
<listitem><para>options to be passed directly to the
new <command>postgres</command> command</para></listitem>
new <command>postgres</command> command; multiple
option invocations are appended</para></listitem>
</varlistentry>
<varlistentry>
......
......@@ -302,7 +302,8 @@ PostgreSQL documentation
<listitem>
<para>
Specifies options to be passed directly to the
<command>postgres</command> command.
<command>postgres</command> command; multiple
option invocations are appended.
</para>
<para>
The options should usually be surrounded by single or double
......
......@@ -288,7 +288,8 @@ PostgreSQL documentation
class="parameter">extra-options</replaceable> are passed to
all server processes started by this
<command>postgres</command> process. If the option string contains
any spaces, the entire string must be quoted.
any spaces, the entire string must be quoted; multiple
option invocations are appended.
</para>
<para>
......
......@@ -2184,7 +2184,16 @@ main(int argc, char **argv)
register_servicename = pg_strdup(optarg);
break;
case 'o':
post_opts = pg_strdup(optarg);
/* append option? */
if (!post_opts)
post_opts = pg_strdup(optarg);
else
{
char *old_post_opts = post_opts;
post_opts = psprintf("%s %s", old_post_opts, optarg);
free(old_post_opts);
}
break;
case 'p':
exec_path = pg_strdup(optarg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment