8
8
*
9
9
*
10
10
* IDENTIFICATION
11
- * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.39 2009/02/25 13:34:32 petere Exp $
11
+ * $PostgreSQL: pgsql/contrib/vacuumlo/vacuumlo.c,v 1.40 2009/02/26 16:02:37 petere Exp $
12
12
*
13
13
*-------------------------------------------------------------------------
14
14
*/
@@ -33,10 +33,17 @@ extern int optind,
33
33
opterr ,
34
34
optopt ;
35
35
36
+ enum trivalue
37
+ {
38
+ TRI_DEFAULT ,
39
+ TRI_NO ,
40
+ TRI_YES
41
+ };
42
+
36
43
struct _param
37
44
{
38
45
char * pg_user ;
39
- int pg_prompt ;
46
+ enum trivalue pg_prompt ;
40
47
char * pg_port ;
41
48
char * pg_host ;
42
49
int verbose ;
@@ -64,7 +71,7 @@ vacuumlo(char *database, struct _param * param)
64
71
static char * password = NULL ;
65
72
bool new_pass ;
66
73
67
- if (param -> pg_prompt && password == NULL )
74
+ if (param -> pg_prompt == TRI_YES && password == NULL )
68
75
password = simple_prompt ("Password: " , 100 , false);
69
76
70
77
/*
@@ -91,7 +98,8 @@ vacuumlo(char *database, struct _param * param)
91
98
92
99
if (PQstatus (conn ) == CONNECTION_BAD &&
93
100
PQconnectionNeedsPassword (conn ) &&
94
- password == NULL )
101
+ password == NULL &&
102
+ param -> pg_prompt != TRI_NO )
95
103
{
96
104
PQfinish (conn );
97
105
password = simple_prompt ("Password: " , 100 , false);
@@ -308,6 +316,7 @@ usage(void)
308
316
printf (" -n don't remove large objects, just show what would be done\n" );
309
317
printf (" -p PORT database server port\n" );
310
318
printf (" -U USERNAME user name to connect as\n" );
319
+ printf (" -w never prompt for password\n" );
311
320
printf (" -W force password prompt\n" );
312
321
printf (" -v write a lot of progress messages\n" );
313
322
printf ("\n" );
@@ -324,15 +333,15 @@ main(int argc, char **argv)
324
333
325
334
/* Parameter handling */
326
335
param .pg_user = NULL ;
327
- param .pg_prompt = 0 ;
336
+ param .pg_prompt = TRI_DEFAULT ;
328
337
param .pg_host = NULL ;
329
338
param .pg_port = NULL ;
330
339
param .verbose = 0 ;
331
340
param .dry_run = 0 ;
332
341
333
342
while (1 )
334
343
{
335
- c = getopt (argc , argv , "?h:U:p:vnW " );
344
+ c = getopt (argc , argv , "?h:U:p:vnwW " );
336
345
if (c == -1 )
337
346
break ;
338
347
@@ -357,8 +366,11 @@ main(int argc, char **argv)
357
366
case 'U' :
358
367
param .pg_user = strdup (optarg );
359
368
break ;
369
+ case 'w' :
370
+ param .pg_prompt = TRI_NO ;
371
+ break ;
360
372
case 'W' :
361
- param .pg_prompt = 1 ;
373
+ param .pg_prompt = TRI_YES ;
362
374
break ;
363
375
case 'p' :
364
376
port = strtol (optarg , NULL , 10 );
0 commit comments