initdb: Improve --wal-segsize handling
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 24 Mar 2018 19:40:21 +0000 (15:40 -0400)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 24 Mar 2018 19:40:21 +0000 (15:40 -0400)
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

index feee359169933aa9728183b085f9a423aa2e5bf3..970463441c1295ffc99fe39277b872f56b953cf5 100644 (file)
@@ -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);
                }