Skip to content
Snippets Groups Projects
Commit 64f86fb1 authored by Noah Misch's avatar Noah Misch
Browse files

Reimplement 9f80f483 with PQconninfo().

Apart from ignoring "hostaddr" set to the empty string, this behaves
identically to its predecessor.  Back-patch to 9.4, where the original
commit first appeared.

Reviewed by Fujii Masao.
parent 2cda8899
No related branches found
No related tags found
No related merge requests found
...@@ -302,14 +302,33 @@ exec_command(const char *cmd, ...@@ -302,14 +302,33 @@ exec_command(const char *cmd,
else if (strcmp(cmd, "conninfo") == 0) else if (strcmp(cmd, "conninfo") == 0)
{ {
char *db = PQdb(pset.db); char *db = PQdb(pset.db);
char *host = PQhost(pset.db);
if (db == NULL) if (db == NULL)
printf(_("You are currently not connected to a database.\n")); printf(_("You are currently not connected to a database.\n"));
else else
{ {
char *host;
PQconninfoOption *connOptions;
PQconninfoOption *option;
host = PQhost(pset.db);
if (host == NULL) if (host == NULL)
host = DEFAULT_PGSOCKET_DIR; host = DEFAULT_PGSOCKET_DIR;
/* A usable "hostaddr" overrides the basic sense of host. */
connOptions = PQconninfo(pset.db);
if (connOptions == NULL)
{
psql_error("out of memory\n");
exit(EXIT_FAILURE);
}
for (option = connOptions; option && option->keyword; option++)
if (strcmp(option->keyword, "hostaddr") == 0)
{
if (option->val != NULL && option->val[0] != '\0')
host = option->val;
break;
}
/* If the host is an absolute path, the connection is via socket */ /* If the host is an absolute path, the connection is via socket */
if (is_absolute_path(host)) if (is_absolute_path(host))
printf(_("You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"), printf(_("You are connected to database \"%s\" as user \"%s\" via socket in \"%s\" at port \"%s\".\n"),
...@@ -318,6 +337,8 @@ exec_command(const char *cmd, ...@@ -318,6 +337,8 @@ exec_command(const char *cmd,
printf(_("You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"), printf(_("You are connected to database \"%s\" as user \"%s\" on host \"%s\" at port \"%s\".\n"),
db, PQuser(pset.db), host, PQport(pset.db)); db, PQuser(pset.db), host, PQport(pset.db));
printSSLInfo(); printSSLInfo();
PQconninfoFree(connOptions);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment