|
8 | 8 | * |
9 | 9 | * |
10 | 10 | * IDENTIFICATION |
11 | | - * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.33 2007/01/05 22:19:18 momjian Exp $ |
| 11 | + * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.34 2007/12/11 02:08:59 tgl Exp $ |
12 | 12 | * |
13 | 13 | *------------------------------------------------------------------------- |
14 | 14 | */ |
@@ -61,32 +61,50 @@ vacuumlo(char *database, struct _param * param) |
61 | 61 | intmatched; |
62 | 62 | intdeleted; |
63 | 63 | inti; |
64 | | -char*password=NULL; |
| 64 | +staticchar*password=NULL; |
| 65 | +boolnew_pass; |
65 | 66 |
|
66 | | -if (param->pg_prompt) |
| 67 | +if (param->pg_prompt&&password==NULL) |
| 68 | +password=simple_prompt("Password: ",100, false); |
| 69 | + |
| 70 | +/* |
| 71 | + * Start the connection. Loop until we have a password if requested by |
| 72 | + * backend. |
| 73 | + */ |
| 74 | +do |
67 | 75 | { |
68 | | -password=simple_prompt("Password: ",32,0); |
69 | | -if (!password) |
| 76 | +new_pass= false; |
| 77 | + |
| 78 | +conn=PQsetdbLogin(param->pg_host, |
| 79 | +param->pg_port, |
| 80 | +NULL, |
| 81 | +NULL, |
| 82 | +database, |
| 83 | +param->pg_user, |
| 84 | +password); |
| 85 | +if (!conn) |
70 | 86 | { |
71 | | -fprintf(stderr,"failed to get password\n"); |
72 | | -exit(1); |
| 87 | +fprintf(stderr,"Connection to database \"%s\" failed\n", |
| 88 | +database); |
| 89 | +return-1; |
73 | 90 | } |
74 | | -} |
75 | 91 |
|
76 | | -conn=PQsetdbLogin(param->pg_host, |
77 | | -param->pg_port, |
78 | | -NULL, |
79 | | -NULL, |
80 | | -database, |
81 | | -param->pg_user, |
82 | | -password |
83 | | -); |
| 92 | +if (PQstatus(conn)==CONNECTION_BAD&& |
| 93 | +PQconnectionNeedsPassword(conn)&& |
| 94 | +password==NULL&& |
| 95 | +!feof(stdin)) |
| 96 | +{ |
| 97 | +PQfinish(conn); |
| 98 | +password=simple_prompt("Password: ",100, false); |
| 99 | +new_pass= true; |
| 100 | +} |
| 101 | +}while (new_pass); |
84 | 102 |
|
85 | 103 | /* check to see that the backend connection was successfully made */ |
86 | 104 | if (PQstatus(conn)==CONNECTION_BAD) |
87 | 105 | { |
88 | | -fprintf(stderr,"Connection to database'%s' failed:\n",database); |
89 | | -fprintf(stderr,"%s",PQerrorMessage(conn)); |
| 106 | +fprintf(stderr,"Connection to database\"%s\" failed:\n%s", |
| 107 | +database,PQerrorMessage(conn)); |
90 | 108 | PQfinish(conn); |
91 | 109 | return-1; |
92 | 110 | } |
|