aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bin/pg_basebackup/streamutil.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index 9ffd5a6ebb5..d0efd8600ca 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -34,7 +34,7 @@
int WalSegSz;
static bool RetrieveDataDirCreatePerm(PGconn *conn);
-static void FindDbnameInConnParams(PQconninfoOption *conn_opts, char **dbname);
+static char *FindDbnameInConnParams(PQconninfoOption *conn_opts);
/* SHOW command for replication connection was introduced in version 10 */
#define MINIMUM_VERSION_FOR_SHOW_CMD 100000
@@ -272,21 +272,21 @@ GetConnection(void)
* FindDbnameInConnParams
*
* This is a helper function for GetDbnameFromConnectionOptions(). Extract
- * the value of dbname from PQconninfoOption parameters.
+ * the value of dbname from PQconninfoOption parameters, if it's present.
+ * Returns a strdup'd result or NULL.
*/
-static void
-FindDbnameInConnParams(PQconninfoOption *conn_opts, char **dbname)
+static char *
+FindDbnameInConnParams(PQconninfoOption *conn_opts)
{
PQconninfoOption *conn_opt;
- Assert(dbname != NULL);
-
for (conn_opt = conn_opts; conn_opt->keyword != NULL; conn_opt++)
{
- if ((strcmp(conn_opt->keyword, "dbname") == 0) &&
+ if (strcmp(conn_opt->keyword, "dbname") == 0 &&
conn_opt->val != NULL && conn_opt->val[0] != '\0')
- *dbname = pg_strdup(conn_opt->val);
+ return pg_strdup(conn_opt->val);
}
+ return NULL;
}
/*
@@ -304,9 +304,9 @@ FindDbnameInConnParams(PQconninfoOption *conn_opts, char **dbname)
char *
GetDbnameFromConnectionOptions(void)
{
- PQconninfoOption *conn_opts = NULL;
+ PQconninfoOption *conn_opts;
char *err_msg = NULL;
- char *dbname = NULL;
+ char *dbname;
/* First try to get the dbname from connection string. */
if (connection_string)
@@ -315,12 +315,11 @@ GetDbnameFromConnectionOptions(void)
if (conn_opts == NULL)
pg_fatal("%s", err_msg);
- FindDbnameInConnParams(conn_opts, &dbname);
+ dbname = FindDbnameInConnParams(conn_opts);
+
+ PQconninfoFree(conn_opts);
if (dbname)
- {
- PQconninfoFree(conn_opts);
return dbname;
- }
}
/*
@@ -331,7 +330,7 @@ GetDbnameFromConnectionOptions(void)
if (conn_opts == NULL)
pg_fatal("out of memory");
- FindDbnameInConnParams(conn_opts, &dbname);
+ dbname = FindDbnameInConnParams(conn_opts);
PQconninfoFree(conn_opts);
return dbname;