Prevent service dbname from defaulting to service name, per bug report

from Michael Fuhr
This commit is contained in:
Bruce Momjian 2003-12-19 21:50:54 +00:00
parent cb95ec2f7a
commit 580cae7567
2 changed files with 9 additions and 23 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.264 2003/11/29 19:52:11 pgsql Exp $ * $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.265 2003/12/19 21:50:54 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -2367,7 +2367,7 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
{ {
char *service = conninfo_getval(options, "service"); char *service = conninfo_getval(options, "service");
char *serviceFile = SYSCONFDIR "/pg_service.conf"; char *serviceFile = SYSCONFDIR "/pg_service.conf";
int group_found = 0; bool group_found = false;
int linenr = 0, int linenr = 0,
i; i;
@ -2431,9 +2431,9 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
if (strncmp(line + 1, service, strlen(service)) == 0 && if (strncmp(line + 1, service, strlen(service)) == 0 &&
line[strlen(service) + 1] == ']') line[strlen(service) + 1] == ']')
group_found = 1; group_found = true;
else else
group_found = 0; group_found = false;
} }
else else
{ {
@ -2445,7 +2445,7 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
*/ */
char *key, char *key,
*val; *val;
int found_keyword; bool found_keyword;
key = line; key = line;
val = strchr(line, '='); val = strchr(line, '=');
@ -2460,32 +2460,18 @@ parseServiceInfo(PQconninfoOption *options, PQExpBuffer errorMessage)
} }
*val++ = '\0'; *val++ = '\0';
/*
* If not already set, set the database name to the
* name of the service
*/
for (i = 0; options[i].keyword; i++)
{
if (strcmp(options[i].keyword, "dbname") == 0)
{
if (options[i].val == NULL)
options[i].val = strdup(service);
break;
}
}
/* /*
* Set the parameter --- but don't override any * Set the parameter --- but don't override any
* previous explicit setting. * previous explicit setting.
*/ */
found_keyword = 0; found_keyword = false;
for (i = 0; options[i].keyword; i++) for (i = 0; options[i].keyword; i++)
{ {
if (strcmp(options[i].keyword, key) == 0) if (strcmp(options[i].keyword, key) == 0)
{ {
if (options[i].val == NULL) if (options[i].val == NULL)
options[i].val = strdup(val); options[i].val = strdup(val);
found_keyword = 1; found_keyword = true;
break; break;
} }
} }

View File

@ -5,12 +5,12 @@
# multiple services in this file. Each starts with a service name in # multiple services in this file. Each starts with a service name in
# brackets. Subsequent lines have connection configuration parameters of # brackets. Subsequent lines have connection configuration parameters of
# the pattern "param=value". A sample configuration for template1 is # the pattern "param=value". A sample configuration for template1 is
# included in this file. If no database name is specified, it is assumed # included in this file. Lines beginning with '#' are comments.
# to match the service name. Lines beginning with '#' are comments.
# #
# Copy this to your sysconf directory (typically /usr/local/pgsql/etc) and # Copy this to your sysconf directory (typically /usr/local/pgsql/etc) and
# rename it pg_service.conf. # rename it pg_service.conf.
# #
# #
#[template1] #[template1]
#dbname=template1
#user=postgres #user=postgres