From dd9e4c8955adc98bce1dd11d0e89e020a803c9d6 Mon Sep 17 00:00:00 2001 From: Euler Taveira Date: Wed, 6 Mar 2024 22:00:23 -0300 Subject: [PATCH v28 3/4] port: replace int with string --- src/bin/pg_basebackup/pg_createsubscriber.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c index 2a0cd47a8d..052153e009 100644 --- a/src/bin/pg_basebackup/pg_createsubscriber.c +++ b/src/bin/pg_basebackup/pg_createsubscriber.c @@ -28,7 +28,7 @@ #include "fe_utils/simple_list.h" #include "getopt_long.h" -#define DEFAULT_SUB_PORT 50432 +#define DEFAULT_SUB_PORT "50432" #define BASE_OUTPUT_DIR "pg_createsubscriber_output.d" /* Command-line options */ @@ -37,7 +37,7 @@ struct CreateSubscriberOptions char *subscriber_dir; /* standby/subscriber data directory */ char *pub_conninfo_str; /* publisher connection string */ char *socket_dir; /* directory for Unix-domain socket, if any */ - unsigned short sub_port; /* subscriber port number */ + char *sub_port; /* subscriber port number */ const char *sub_username; /* subscriber username */ SimpleStringList database_names; /* list of database names */ int recovery_timeout; /* stop recovery after this time */ @@ -197,7 +197,7 @@ usage(void) printf(_(" -d, --database=DBNAME database to create a subscription\n")); printf(_(" -D, --pgdata=DATADIR location for the subscriber data directory\n")); printf(_(" -n, --dry-run dry run, just show what would be done\n")); - printf(_(" -p, --subscriber-port=PORT subscriber port number (default %d)\n"), DEFAULT_SUB_PORT); + printf(_(" -p, --subscriber-port=PORT subscriber port number (default %s)\n"), DEFAULT_SUB_PORT); printf(_(" -P, --publisher-server=CONNSTR publisher connection string\n")); printf(_(" -s, --socket-directory=DIR socket directory to use (default current directory)\n")); printf(_(" -t, --recovery-timeout=SECS seconds to wait for recovery to end\n")); @@ -1260,7 +1260,7 @@ start_standby_server(struct CreateSubscriberOptions *opt, const char *pg_ctl_pat appendPQExpBuffer(pg_ctl_cmd, "\"%s\" start -D \"%s\" -s", pg_ctl_path, opt->subscriber_dir); if (with_options) - appendPQExpBuffer(pg_ctl_cmd, " -o \"-p %u%s\"", + appendPQExpBuffer(pg_ctl_cmd, " -o \"-p %s%s\"", opt->sub_port, socket_string); pg_log_debug("pg_ctl command is: %s", pg_ctl_cmd->data); rc = system(pg_ctl_cmd->data); @@ -1704,7 +1704,8 @@ main(int argc, char **argv) opt.subscriber_dir = NULL; opt.pub_conninfo_str = NULL; opt.socket_dir = NULL; - opt.sub_port = DEFAULT_SUB_PORT; + opt.sub_port = palloc(16); + strcpy(opt.sub_port, DEFAULT_SUB_PORT); opt.sub_username = NULL; opt.database_names = (SimpleStringList) { @@ -1749,8 +1750,8 @@ main(int argc, char **argv) dry_run = true; break; case 'p': - if ((opt.sub_port = atoi(optarg)) <= 0) - pg_fatal("invalid subscriber port number"); + pg_free(opt.sub_port); + opt.sub_port = pg_strdup(optarg); break; case 'P': opt.pub_conninfo_str = pg_strdup(optarg); @@ -1848,7 +1849,7 @@ main(int argc, char **argv) pg_log_info("validating connection string on subscriber"); #if !defined(WIN32) - sub_base_conninfo = psprintf("host=%s port=%u user=%s fallback_application_name=%s", + sub_base_conninfo = psprintf("host=%s port=%s user=%s fallback_application_name=%s", opt.socket_dir, opt.sub_port, opt.sub_username, progname); #else /* WIN32 */ sub_base_conninfo = psprintf("port=%u user=%s fallback_application_name=%s", -- 2.43.0