From 18627c553191219319075713848740bb6794e85a Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 17 May 2006 21:50:54 +0000 Subject: Allow the .pgpass hostname to match the default socket directory, as well as a blank pghost. --- src/interfaces/libpq/fe-connect.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 98d834b5954..45dae727286 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.328 2006/03/14 22:48:23 tgl Exp $ + * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.329 2006/05/17 21:50:54 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -3106,9 +3106,24 @@ PasswordFromFile(char *hostname, char *port, char *dbname, char *username) if (username == NULL || strlen(username) == 0) return NULL; + /* 'localhost' matches pghost of '' or the default socket directory */ if (hostname == NULL) hostname = DefaultHost; + else if (is_absolute_path(hostname)) + { + char canon_host[MAXPGPATH]; + char canon_def_socket[MAXPGPATH]; + + StrNCpy(canon_host, hostname, MAXPGPATH); + StrNCpy(canon_def_socket, DEFAULT_PGSOCKET_DIR, MAXPGPATH); + canonicalize_path(canon_host); + canonicalize_path(canon_def_socket); + + if (strcmp(canon_host, canon_def_socket) == 0) + hostname = DefaultHost; + } + if (port == NULL) port = DEF_PGPORT_STR; -- cgit v1.2.3