Commit aba78ab4 authored by Peter Eisentraut's avatar Peter Eisentraut

pg_upgrade: Improve invalid option handling

Currently, calling pg_upgrade with an invalid command-line option
aborts pg_upgrade but leaves a pg_upgrade_internal.log file lying
around.  Reorder things a bit so that that file is not created until
all the options have been parsed.

Discussion: https://www.postgresql.org/message-id/24c8bd05-aed1-6301-919d-8acbabdb8c24@2ndquadrant.com
parent dfd79e2d
...@@ -101,9 +101,6 @@ parseCommandLine(int argc, char *argv[]) ...@@ -101,9 +101,6 @@ parseCommandLine(int argc, char *argv[])
if (os_user_effective_id == 0) if (os_user_effective_id == 0)
pg_fatal("%s: cannot be run as root\n", os_info.progname); pg_fatal("%s: cannot be run as root\n", os_info.progname);
if ((log_opts.internal = fopen_priv(INTERNAL_LOG_FILE, "a")) == NULL)
pg_fatal("could not write to log file \"%s\"\n", INTERNAL_LOG_FILE);
while ((option = getopt_long(argc, argv, "d:D:b:B:cj:ko:O:p:P:rs:U:v", while ((option = getopt_long(argc, argv, "d:D:b:B:cj:ko:O:p:P:rs:U:v",
long_options, &optindex)) != -1) long_options, &optindex)) != -1)
{ {
...@@ -205,7 +202,6 @@ parseCommandLine(int argc, char *argv[]) ...@@ -205,7 +202,6 @@ parseCommandLine(int argc, char *argv[])
break; break;
case 'v': case 'v':
pg_log(PG_REPORT, "Running in verbose mode\n");
log_opts.verbose = true; log_opts.verbose = true;
break; break;
...@@ -214,12 +210,18 @@ parseCommandLine(int argc, char *argv[]) ...@@ -214,12 +210,18 @@ parseCommandLine(int argc, char *argv[])
break; break;
default: default:
pg_fatal("Try \"%s --help\" for more information.\n", fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
os_info.progname); os_info.progname);
break; exit(1);
} }
} }
if ((log_opts.internal = fopen_priv(INTERNAL_LOG_FILE, "a")) == NULL)
pg_fatal("could not write to log file \"%s\"\n", INTERNAL_LOG_FILE);
if (log_opts.verbose)
pg_log(PG_REPORT, "Running in verbose mode\n");
/* label start of upgrade in logfiles */ /* label start of upgrade in logfiles */
for (filename = output_files; *filename != NULL; filename++) for (filename = output_files; *filename != NULL; filename++)
{ {
......
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