|
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 | }
|
|