From 69a1f9259c025fc38280b41ced25571feeb90ef8 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Thu, 13 Jun 2019 10:12:34 +0200 Subject: [PATCH] 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. --- src/bin/pg_upgrade/option.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c index 171aaa8f13..873d1d07e4 100644 --- a/src/bin/pg_upgrade/option.c +++ b/src/bin/pg_upgrade/option.c @@ -101,9 +101,6 @@ parseCommandLine(int argc, char *argv[]) if (os_user_effective_id == 0) 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", long_options, &optindex)) != -1) { @@ -205,7 +202,6 @@ parseCommandLine(int argc, char *argv[]) break; case 'v': - pg_log(PG_REPORT, "Running in verbose mode\n"); log_opts.verbose = true; break; @@ -214,12 +210,18 @@ parseCommandLine(int argc, char *argv[]) break; default: - pg_fatal("Try \"%s --help\" for more information.\n", - os_info.progname); - break; + fprintf(stderr, _("Try \"%s --help\" for more information.\n"), + os_info.progname); + 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 */ for (filename = output_files; *filename != NULL; filename++) { -- 2.22.0