From 496d56670af44a2a578c15195c36f797e29cff24 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 24 Mar 2018 15:40:21 -0400 Subject: [PATCH] initdb: Improve --wal-segsize handling Give separate error messages for when the argument is not a number and when it is not the right kind of number. Fix wording in the help message. --- src/bin/initdb/initdb.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c index feee359169..970463441c 100644 --- a/src/bin/initdb/initdb.c +++ b/src/bin/initdb/initdb.c @@ -2323,7 +2323,7 @@ usage(const char *progname) printf(_(" -U, --username=NAME database superuser name\n")); printf(_(" -W, --pwprompt prompt for a password for the new superuser\n")); printf(_(" -X, --waldir=WALDIR location for the write-ahead log directory\n")); - printf(_(" --wal-segsize=SIZE size of wal segment size in megabytes\n")); + printf(_(" --wal-segsize=SIZE size of WAL segments, in megabytes\n")); printf(_("\nLess commonly used options:\n")); printf(_(" -d, --debug generate lots of debugging output\n")); printf(_(" -k, --data-checksums use data page checksums\n")); @@ -3224,11 +3224,17 @@ main(int argc, char *argv[]) wal_segment_size_mb = strtol(str_wal_segment_size_mb, &endptr, 10); /* verify that wal segment size is valid */ - if (*endptr != '\0' || - !IsValidWalSegSize(wal_segment_size_mb * 1024 * 1024)) + if (*endptr != '\0') { fprintf(stderr, - _("%s: --wal-segsize must be a power of two between 1 and 1024\n"), + _("%s: argument of --wal-segsize must be a number\n"), + progname); + exit(1); + } + if (!IsValidWalSegSize(wal_segment_size_mb * 1024 * 1024)) + { + fprintf(stderr, + _("%s: argument of --wal-segsize must be a power of two between 1 and 1024\n"), progname); exit(1); }