Tom Lane <t...@sss.pgh.pa.us> writes: > Andres Freund <and...@anarazel.de> writes: > > On July 21, 2018 11:15:51 PM PDT, Tom Lane <t...@sss.pgh.pa.us> wrote: > > > This is, in fact, how it's done in all PG apps. > > Think there's a fair argument that we should improve that at some point... > Perhaps. Peter E. might remember why it's like that.
It was done this way because then there was HAVE_GETOPT_LONG define for systems that doesn't support getopt_long, see commit 41fde5460387 ("Polish help output. Allow --help to work with BSD getopts.", Peter Eisentraut, 2001-01-06). Now this define is not used by any app in src/bin, so I believe there is no need for this workaround anymore. By the way, this approach is already not used in pg_waldump and psql handles the arguments more complex way to avoid the problem under discussion. > But I'm dubious about changing it in only one app. Agreed. I have changed handling of the --help and --version options in all apps where it exhibits the problem described, with the exception for pg_archivecleanup where getopt is used instead of getopt_long. The separate patch will be proposed to address it. The patch is against current master. All tests pass.
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index 3f203c6ca6..7a23c0b1ab 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -3130,23 +3130,9 @@ main(int argc, char *argv[]) progname = get_progname(argv[0]); set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("initdb")); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(progname); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("initdb (PostgreSQL) " PG_VERSION); - exit(0); - } - } - /* process command-line options */ - while ((c = getopt_long(argc, argv, "dD:E:kL:nNU:WA:sST:X:g", long_options, &option_index)) != -1) + while ((c = getopt_long(argc, argv, "dD:E:kL:nNU:WA:sST:X:gV?", long_options, &option_index)) != -1) { switch (c) { @@ -3243,6 +3229,14 @@ main(int argc, char *argv[]) case 'g': SetDataDirectoryCreatePerm(PG_DIR_MODE_GROUP); break; + case 'V': + puts("initdb (PostgreSQL) " PG_VERSION); + exit(0); + break; + case '?': + usage(progname); + exit(0); + break; default: /* getopt_long already emitted a complaint */ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index ef4cfc4384..03f7875514 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -2169,24 +2169,9 @@ main(int argc, char **argv) progname = get_progname(argv[0]); set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_basebackup")); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - else if (strcmp(argv[1], "-V") == 0 - || strcmp(argv[1], "--version") == 0) - { - puts("pg_basebackup (PostgreSQL) " PG_VERSION); - exit(0); - } - } - atexit(cleanup_directories_atexit); - while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:d:c:h:p:U:s:wWkvP", + while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:d:c:h:p:U:s:wWkvPV?", long_options, &option_index)) != -1) { switch (c) @@ -2328,6 +2313,14 @@ main(int argc, char **argv) case 'P': showprogress = true; break; + case 'V': + puts("pg_basebackup (PostgreSQL) " PG_VERSION); + exit(0); + break; + case '?': + usage(); + exit(0); + break; case 3: verify_checksums = false; break; diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index 8be8d48a8a..5318454d67 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -509,22 +509,7 @@ main(int argc, char **argv) progname = get_progname(argv[0]); set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_basebackup")); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - else if (strcmp(argv[1], "-V") == 0 || - strcmp(argv[1], "--version") == 0) - { - puts("pg_receivewal (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((c = getopt_long(argc, argv, "D:d:E:h:p:U:s:S:nwWvZ:", + while ((c = getopt_long(argc, argv, "D:d:E:h:p:U:s:S:nwWvVZ:?", long_options, &option_index)) != -1) { switch (c) @@ -584,6 +569,10 @@ main(int argc, char **argv) case 'v': verbose++; break; + case 'V': + puts("pg_receivewal (PostgreSQL) " PG_VERSION); + exit(0); + break; case 'Z': compresslevel = atoi(optarg); if (compresslevel < 0 || compresslevel > 9) @@ -593,6 +582,10 @@ main(int argc, char **argv) exit(1); } break; + case '?': + usage(); + exit(0); + break; /* action */ case 1: do_create_slot = true; diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index ef85c9af4c..170e7475eb 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -711,22 +711,7 @@ main(int argc, char **argv) progname = get_progname(argv[0]); set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_basebackup")); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - else if (strcmp(argv[1], "-V") == 0 || - strcmp(argv[1], "--version") == 0) - { - puts("pg_recvlogical (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((c = getopt_long(argc, argv, "E:f:F:nvd:h:p:U:wWI:o:P:s:S:", + while ((c = getopt_long(argc, argv, "E:f:F:nvd:h:p:U:wWI:o:P:s:S:V?", long_options, &option_index)) != -1) { switch (c) @@ -750,6 +735,14 @@ main(int argc, char **argv) case 'v': verbose++; break; + case 'V': + puts("pg_recvlogical (PostgreSQL) " PG_VERSION); + exit(0); + break; + case '?': + usage(); + exit(0); + break; /* connection options */ case 'd': dbname = pg_strdup(optarg); diff --git a/src/bin/pg_controldata/pg_controldata.c b/src/bin/pg_controldata/pg_controldata.c index 895a51f89d..9c8ba27764 100644 --- a/src/bin/pg_controldata/pg_controldata.c +++ b/src/bin/pg_controldata/pg_controldata.c @@ -88,6 +88,8 @@ main(int argc, char *argv[]) { static struct option long_options[] = { {"pgdata", required_argument, NULL, 'D'}, + {"version", no_argument, NULL, 'V'}, + {"help", no_argument, NULL, '?'}, {NULL, 0, NULL, 0} }; @@ -110,21 +112,7 @@ main(int argc, char *argv[]) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(progname); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_controldata (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((c = getopt_long(argc, argv, "D:", long_options, NULL)) != -1) + while ((c = getopt_long(argc, argv, "D:V?", long_options, NULL)) != -1) { switch (c) { @@ -132,6 +120,16 @@ main(int argc, char *argv[]) DataDir = optarg; break; + case 'V': + puts("pg_controldata (PostgreSQL) " PG_VERSION); + exit(0); + break; + + case '?': + usage(progname); + exit(0); + break; + default: fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c index ed2396aa6c..8779cb6a66 100644 --- a/src/bin/pg_ctl/pg_ctl.c +++ b/src/bin/pg_ctl/pg_ctl.c @@ -2220,7 +2220,7 @@ main(int argc, char **argv) /* process command-line options */ while (optind < argc) { - while ((c = getopt_long(argc, argv, "cD:e:l:m:N:o:p:P:sS:t:U:wW", + while ((c = getopt_long(argc, argv, "cD:e:l:m:N:o:p:P:sS:t:U:VwW?", long_options, &option_index)) != -1) { switch (c) @@ -2296,12 +2296,20 @@ main(int argc, char **argv) /* Prepend .\ for local accounts */ register_username = psprintf(".\\%s", optarg); break; + case 'V': + puts("pg_ctl (PostgreSQL) " PG_VERSION); + exit(0); + break; case 'w': do_wait = true; break; case 'W': do_wait = false; break; + case '?': + do_help(); + exit(0); + break; case 'c': allow_core_files = true; break; diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index 86524d6598..0f961bf9a6 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -399,23 +399,9 @@ main(int argc, char **argv) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - help(progname); - exit_nicely(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_dump (PostgreSQL) " PG_VERSION); - exit_nicely(0); - } - } - InitDumpOptions(&dopt); - while ((c = getopt_long(argc, argv, "abBcCd:E:f:F:h:j:n:N:oOp:RsS:t:T:U:vwWxZ:", + while ((c = getopt_long(argc, argv, "abBcCd:E:f:F:h:j:n:N:oOp:RsS:t:T:U:vVwWxZ:?", long_options, &optindex)) != -1) { switch (c) @@ -514,6 +500,11 @@ main(int argc, char **argv) g_verbose = true; break; + case 'V': /* version */ + puts("pg_dump (PostgreSQL) " PG_VERSION); + exit_nicely(0); + break; + case 'w': prompt_password = TRI_NO; break; @@ -535,6 +526,11 @@ main(int argc, char **argv) } break; + case '?': /* help */ + help(progname); + exit_nicely(0); + break; + case 0: /* This covers the long options. */ break; diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c index eb29d318a4..7312a8c7ce 100644 --- a/src/bin/pg_dump/pg_dumpall.c +++ b/src/bin/pg_dump/pg_dumpall.c @@ -110,10 +110,12 @@ main(int argc, char *argv[]) {"tablespaces-only", no_argument, NULL, 't'}, {"username", required_argument, NULL, 'U'}, {"verbose", no_argument, NULL, 'v'}, + {"version", no_argument, NULL, 'V'}, {"no-password", no_argument, NULL, 'w'}, {"password", no_argument, NULL, 'W'}, {"no-privileges", no_argument, NULL, 'x'}, {"no-acl", no_argument, NULL, 'x'}, + {"help", no_argument, NULL, '?'}, /* * the following options don't have an equivalent short option letter @@ -165,20 +167,6 @@ main(int argc, char *argv[]) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - help(); - exit_nicely(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_dumpall (PostgreSQL) " PG_VERSION); - exit_nicely(0); - } - } - if ((ret = find_other_exec(argv[0], "pg_dump", PGDUMP_VERSIONSTR, pg_dump_bin)) < 0) { @@ -205,7 +193,7 @@ main(int argc, char *argv[]) pgdumpopts = createPQExpBuffer(); - while ((c = getopt_long(argc, argv, "acd:E:f:gh:l:oOp:rsS:tU:vwWx", long_options, &optindex)) != -1) + while ((c = getopt_long(argc, argv, "acd:E:f:gh:l:oOp:rsS:tU:vVwWx?", long_options, &optindex)) != -1) { switch (c) { @@ -284,6 +272,11 @@ main(int argc, char *argv[]) appendPQExpBufferStr(pgdumpopts, " -v"); break; + case 'V': + puts("pg_dumpall (PostgreSQL) " PG_VERSION); + exit_nicely(0); + break; + case 'w': prompt_password = TRI_NO; appendPQExpBufferStr(pgdumpopts, " -w"); @@ -299,6 +292,11 @@ main(int argc, char *argv[]) appendPQExpBufferStr(pgdumpopts, " -x"); break; + case '?': + help(); + exit_nicely(0); + break; + case 0: break; diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index 501d7cea72..5735608b1b 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -106,7 +106,9 @@ main(int argc, char **argv) {"use-list", 1, NULL, 'L'}, {"username", 1, NULL, 'U'}, {"verbose", 0, NULL, 'v'}, + {"version", 0, NULL, 'V'}, {"single-transaction", 0, NULL, '1'}, + {"help", 0, NULL, '?'}, /* * the following options don't have an equivalent short option letter @@ -136,21 +138,7 @@ main(int argc, char **argv) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(progname); - exit_nicely(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_restore (PostgreSQL) " PG_VERSION); - exit_nicely(0); - } - } - - while ((c = getopt_long(argc, argv, "acCd:ef:F:h:I:j:lL:n:N:Op:P:RsS:t:T:U:vwWx1", + while ((c = getopt_long(argc, argv, "acCd:ef:F:h:I:j:lL:n:N:Op:P:RsS:t:T:U:vVwWx1?", cmdopts, NULL)) != -1) { switch (c) @@ -249,6 +237,11 @@ main(int argc, char **argv) opts->verbose = 1; break; + case 'V': /* version */ + puts("pg_restore (PostgreSQL) " PG_VERSION); + exit_nicely(0); + break; + case 'w': opts->promptPassword = TRI_NO; break; @@ -266,6 +259,11 @@ main(int argc, char **argv) opts->exit_on_error = true; break; + case '?': /* help */ + usage(progname); + exit_nicely(0); + break; + case 0: /* diff --git a/src/bin/pg_resetwal/pg_resetwal.c b/src/bin/pg_resetwal/pg_resetwal.c index d63a3a27f6..05114a2133 100644 --- a/src/bin/pg_resetwal/pg_resetwal.c +++ b/src/bin/pg_resetwal/pg_resetwal.c @@ -101,7 +101,9 @@ main(int argc, char *argv[]) {"dry-run", no_argument, NULL, 'n'}, {"next-oid", required_argument, NULL, 'o'}, {"multixact-offset", required_argument, NULL, 'O'}, + {"version", no_argument, NULL, 'V'}, {"next-transaction-id", required_argument, NULL, 'x'}, + {"help", no_argument, NULL, '?'}, {"wal-segsize", required_argument, NULL, 1}, {NULL, 0, NULL, 0} }; @@ -120,22 +122,7 @@ main(int argc, char *argv[]) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_resetwal (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - - while ((c = getopt_long(argc, argv, "c:D:e:fl:m:no:O:x:", long_options, NULL)) != -1) + while ((c = getopt_long(argc, argv, "c:D:e:fl:m:no:O:Vx:?", long_options, NULL)) != -1) { switch (c) { @@ -293,6 +280,16 @@ main(int argc, char *argv[]) log_fname = pg_strdup(optarg); break; + case 'V': + puts("pg_resetwal (PostgreSQL) " PG_VERSION); + exit(0); + break; + + case '?': + usage(); + exit(0); + break; + case 1: set_wal_segsize = strtol(optarg, &endptr, 10) * 1024 * 1024; if (endptr == optarg || *endptr != '\0') diff --git a/src/bin/pg_rewind/pg_rewind.c b/src/bin/pg_rewind/pg_rewind.c index 9653106386..ad181d5b2c 100644 --- a/src/bin/pg_rewind/pg_rewind.c +++ b/src/bin/pg_rewind/pg_rewind.c @@ -115,27 +115,19 @@ main(int argc, char **argv) progname = get_progname(argv[0]); /* Process command-line arguments */ - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(progname); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_rewind (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((c = getopt_long(argc, argv, "D:nNP", long_options, &option_index)) != -1) + while ((c = getopt_long(argc, argv, "D:nNPV?", long_options, &option_index)) != -1) { switch (c) { case '?': - fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); - exit(1); + usage(progname); + exit(0); + break; + + case 'V': + puts("pg_rewind (PostgreSQL) " PG_VERSION); + exit(0); + break; case 'P': showprogress = true; diff --git a/src/bin/pg_test_fsync/pg_test_fsync.c b/src/bin/pg_test_fsync/pg_test_fsync.c index e6f7ef8557..50e8ad50ce 100644 --- a/src/bin/pg_test_fsync/pg_test_fsync.c +++ b/src/bin/pg_test_fsync/pg_test_fsync.c @@ -141,27 +141,15 @@ handle_args(int argc, char *argv[]) static struct option long_options[] = { {"filename", required_argument, NULL, 'f'}, {"secs-per-test", required_argument, NULL, 's'}, + {"version", no_argument, NULL, 'V'}, + {"help", no_argument, NULL, '?'}, {NULL, 0, NULL, 0} }; int option; /* Command line option */ int optindex = 0; /* used by getopt_long */ - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - printf(_("Usage: %s [-f FILENAME] [-s SECS-PER-TEST]\n"), progname); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_test_fsync (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((option = getopt_long(argc, argv, "f:s:", + while ((option = getopt_long(argc, argv, "f:s:V?", long_options, &optindex)) != -1) { switch (option) @@ -174,6 +162,16 @@ handle_args(int argc, char *argv[]) secs_per_test = atoi(optarg); break; + case 'V': + puts("pg_test_fsync (PostgreSQL) " PG_VERSION); + exit(0); + break; + + case '?': + printf(_("Usage: %s [-f FILENAME] [-s SECS-PER-TEST]\n"), progname); + exit(0); + break; + default: fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); diff --git a/src/bin/pg_test_timing/pg_test_timing.c b/src/bin/pg_test_timing/pg_test_timing.c index 6e2fd1ab8c..4e24e8a599 100644 --- a/src/bin/pg_test_timing/pg_test_timing.c +++ b/src/bin/pg_test_timing/pg_test_timing.c @@ -42,27 +42,15 @@ handle_args(int argc, char *argv[]) { static struct option long_options[] = { {"duration", required_argument, NULL, 'd'}, + {"version", no_argument, NULL, 'V'}, + {"help", no_argument, NULL, '?'}, {NULL, 0, NULL, 0} }; int option; /* Command line option */ int optindex = 0; /* used by getopt_long */ - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - printf(_("Usage: %s [-d DURATION]\n"), progname); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_test_timing (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((option = getopt_long(argc, argv, "d:", + while ((option = getopt_long(argc, argv, "d:V?", long_options, &optindex)) != -1) { switch (option) @@ -71,6 +59,16 @@ handle_args(int argc, char *argv[]) test_duration = atoi(optarg); break; + case 'V': + puts("pg_test_timing (PostgreSQL) " PG_VERSION); + exit(0); + break; + + case '?': + printf(_("Usage: %s [-d DURATION]\n"), progname); + exit(0); + break; + default: fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c index 9dbc9225a6..30a6831e2a 100644 --- a/src/bin/pg_upgrade/option.c +++ b/src/bin/pg_upgrade/option.c @@ -53,6 +53,8 @@ parseCommandLine(int argc, char *argv[]) {"retain", no_argument, NULL, 'r'}, {"jobs", required_argument, NULL, 'j'}, {"verbose", no_argument, NULL, 'v'}, + {"version", no_argument, NULL, 'V'}, + {"help", no_argument, NULL, '?'}, {NULL, 0, NULL, 0} }; int option; /* Command line option */ @@ -100,7 +102,7 @@ parseCommandLine(int argc, char *argv[]) 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:rU:v", + while ((option = getopt_long(argc, argv, "d:D:b:B:cj:ko:O:p:P:rU:vV?", long_options, &optindex)) != -1) { switch (option) @@ -203,6 +205,16 @@ parseCommandLine(int argc, char *argv[]) log_opts.verbose = true; break; + case 'V': + puts("pg_upgrade (PostgreSQL) " PG_VERSION); + exit(0); + break; + + case '?': + usage(); + exit(0); + break; + default: pg_fatal("Try \"%s --help\" for more information.\n", os_info.progname); diff --git a/src/bin/pg_verify_checksums/pg_verify_checksums.c b/src/bin/pg_verify_checksums/pg_verify_checksums.c index 28c975446e..ca45cc126e 100644 --- a/src/bin/pg_verify_checksums/pg_verify_checksums.c +++ b/src/bin/pg_verify_checksums/pg_verify_checksums.c @@ -208,6 +208,8 @@ main(int argc, char *argv[]) { static struct option long_options[] = { {"pgdata", required_argument, NULL, 'D'}, + {"help", no_argument, NULL, '?'}, + {"version", no_argument, NULL, 'V'}, {NULL, 0, NULL, 0} }; @@ -220,21 +222,7 @@ main(int argc, char *argv[]) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pg_verify_checksums (PostgreSQL) " PG_VERSION); - exit(0); - } - } - - while ((c = getopt_long(argc, argv, "D:r:d", long_options, &option_index)) != -1) + while ((c = getopt_long(argc, argv, "dD:r:V?", long_options, &option_index)) != -1) { switch (c) { @@ -252,6 +240,14 @@ main(int argc, char *argv[]) } only_relfilenode = pstrdup(optarg); break; + case 'V': + puts("pg_verify_checksums (PostgreSQL) " PG_VERSION); + exit(0); + break; + case '?': + usage(); + exit(0); + break; default: fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); diff --git a/src/bin/pgbench/pgbench.c b/src/bin/pgbench/pgbench.c index 41b756c089..d1ff85a677 100644 --- a/src/bin/pgbench/pgbench.c +++ b/src/bin/pgbench/pgbench.c @@ -4763,6 +4763,7 @@ main(int argc, char **argv) {"define", required_argument, NULL, 'D'}, {"file", required_argument, NULL, 'f'}, {"fillfactor", required_argument, NULL, 'F'}, + {"help", no_argument, NULL, '?'}, {"host", required_argument, NULL, 'h'}, {"initialize", no_argument, NULL, 'i'}, {"init-steps", required_argument, NULL, 'I'}, @@ -4783,6 +4784,7 @@ main(int argc, char **argv) {"transactions", required_argument, NULL, 't'}, {"username", required_argument, NULL, 'U'}, {"vacuum-all", no_argument, NULL, 'v'}, + {"version", no_argument, NULL, 'V'}, /* long-named only options */ {"unlogged-tables", no_argument, NULL, 1}, {"tablespace", required_argument, NULL, 2}, @@ -4832,20 +4834,6 @@ main(int argc, char **argv) progname = get_progname(argv[0]); - if (argc > 1) - { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) - { - usage(); - exit(0); - } - if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) - { - puts("pgbench (PostgreSQL) " PG_VERSION); - exit(0); - } - } - #ifdef WIN32 /* stderr is buffered on Win32. */ setvbuf(stderr, NULL, _IONBF, 0); @@ -4868,7 +4856,7 @@ main(int argc, char **argv) exit(1); } - while ((c = getopt_long(argc, argv, "iI:h:nvp:dqb:SNc:j:Crs:t:T:U:lf:D:F:M:P:R:L:", long_options, &optindex)) != -1) + while ((c = getopt_long(argc, argv, "iI:h:nvp:dqb:SNc:j:Crs:t:T:U:lf:D:F:M:P:R:L:V?", long_options, &optindex)) != -1) { char *script; @@ -5097,6 +5085,14 @@ main(int argc, char **argv) latency_limit = (int64) (limit_ms * 1000); } break; + case 'V': + puts("pgbench (PostgreSQL) " PG_VERSION); + exit(0); + break; + case '?': + usage(); + exit(0); + break; case 1: /* unlogged-tables */ initialization_option_set = true; unlogged_tables = true;