Commit 5eb56611 authored by Tom Lane's avatar Tom Lane

Make vacuumlo prompt for password when needed, thus making its -W

switch optional, as is the case for every other one of our programs.
I had already documented its -W as being optional, so this is bringing
the code into line with the docs ...
parent 075e4102
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.33 2007/01/05 22:19:18 momjian Exp $ * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.34 2007/12/11 02:08:59 tgl Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -61,32 +61,50 @@ vacuumlo(char *database, struct _param * param) ...@@ -61,32 +61,50 @@ vacuumlo(char *database, struct _param * param)
int matched; int matched;
int deleted; int deleted;
int i; int i;
char *password = NULL; static char *password = NULL;
bool new_pass;
if (param->pg_prompt) if (param->pg_prompt && password == NULL)
password = simple_prompt("Password: ", 100, false);
/*
* Start the connection. Loop until we have a password if requested by
* backend.
*/
do
{ {
password = simple_prompt("Password: ", 32, 0); new_pass = false;
if (!password)
conn = PQsetdbLogin(param->pg_host,
param->pg_port,
NULL,
NULL,
database,
param->pg_user,
password);
if (!conn)
{ {
fprintf(stderr, "failed to get password\n"); fprintf(stderr, "Connection to database \"%s\" failed\n",
exit(1); database);
return -1;
} }
}
conn = PQsetdbLogin(param->pg_host, if (PQstatus(conn) == CONNECTION_BAD &&
param->pg_port, PQconnectionNeedsPassword(conn) &&
NULL, password == NULL &&
NULL, !feof(stdin))
database, {
param->pg_user, PQfinish(conn);
password password = simple_prompt("Password: ", 100, false);
); new_pass = true;
}
} while (new_pass);
/* check to see that the backend connection was successfully made */ /* check to see that the backend connection was successfully made */
if (PQstatus(conn) == CONNECTION_BAD) if (PQstatus(conn) == CONNECTION_BAD)
{ {
fprintf(stderr, "Connection to database '%s' failed:\n", database); fprintf(stderr, "Connection to database \"%s\" failed:\n%s",
fprintf(stderr, "%s", PQerrorMessage(conn)); database, PQerrorMessage(conn));
PQfinish(conn); PQfinish(conn);
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment