|
76 | 76 | #include "common/restricted_token.h" |
77 | 77 | #include "common/string.h" |
78 | 78 | #include "common/username.h" |
| 79 | +#include "fe_utils/option_utils.h" |
79 | 80 | #include "fe_utils/string_utils.h" |
80 | 81 | #include "getopt_long.h" |
81 | 82 | #include "mb/pg_wchar.h" |
@@ -163,8 +164,7 @@ static bool sync_only = false; |
163 | 164 | static bool show_setting = false; |
164 | 165 | static bool data_checksums = false; |
165 | 166 | static char *xlog_dir = NULL; |
166 | | -static char *str_wal_segment_size_mb = NULL; |
167 | | -static int wal_segment_size_mb; |
| 167 | +static int wal_segment_size_mb = (DEFAULT_XLOG_SEG_SIZE) / (1024 * 1024); |
168 | 168 |
|
169 | 169 |
|
170 | 170 | /* internal vars */ |
@@ -3258,7 +3258,8 @@ main(int argc, char *argv[]) |
3258 | 3258 | xlog_dir = pg_strdup(optarg); |
3259 | 3259 | break; |
3260 | 3260 | case 12: |
3261 | | - str_wal_segment_size_mb = pg_strdup(optarg); |
| 3261 | + if (!option_parse_int(optarg, "--wal-segsize", 1, 1024, &wal_segment_size_mb)) |
| 3262 | + exit(1); |
3262 | 3263 | break; |
3263 | 3264 | case 13: |
3264 | 3265 | noinstructions = true; |
@@ -3348,22 +3349,8 @@ main(int argc, char *argv[]) |
3348 | 3349 |
|
3349 | 3350 | check_need_password(authmethodlocal, authmethodhost); |
3350 | 3351 |
|
3351 | | - /* set wal segment size */ |
3352 | | - if (str_wal_segment_size_mb == NULL) |
3353 | | - wal_segment_size_mb = (DEFAULT_XLOG_SEG_SIZE) / (1024 * 1024); |
3354 | | - else |
3355 | | - { |
3356 | | - char *endptr; |
3357 | | - |
3358 | | - /* check that the argument is a number */ |
3359 | | - wal_segment_size_mb = strtol(str_wal_segment_size_mb, &endptr, 10); |
3360 | | - |
3361 | | - /* verify that wal segment size is valid */ |
3362 | | - if (endptr == str_wal_segment_size_mb || *endptr != '\0') |
3363 | | - pg_fatal("argument of --wal-segsize must be a number"); |
3364 | | - if (!IsValidWalSegSize(wal_segment_size_mb * 1024 * 1024)) |
3365 | | - pg_fatal("argument of --wal-segsize must be a power of 2 between 1 and 1024"); |
3366 | | - } |
| 3352 | + if (!IsValidWalSegSize(wal_segment_size_mb * 1024 * 1024)) |
| 3353 | + pg_fatal("argument of %s must be a power of 2 between 1 and 1024", "--wal-segsize"); |
3367 | 3354 |
|
3368 | 3355 | get_restricted_token(); |
3369 | 3356 |
|
|
0 commit comments