88 *
99 *
1010 * 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 $
1212 *
1313 *-------------------------------------------------------------------------
1414 */
@@ -33,10 +33,17 @@ extern intoptind,
3333opterr ,
3434optopt ;
3535
36+ enum trivalue
37+ {
38+ TRI_DEFAULT ,
39+ TRI_NO ,
40+ TRI_YES
41+ };
42+
3643struct _param
3744{
3845char * pg_user ;
39- int pg_prompt ;
46+ enum trivalue pg_prompt ;
4047char * pg_port ;
4148char * pg_host ;
4249int verbose ;
@@ -64,7 +71,7 @@ vacuumlo(char *database, struct _param * param)
6471static char * password = NULL ;
6572bool new_pass ;
6673
67- if (param -> pg_prompt && password == NULL )
74+ if (param -> pg_prompt == TRI_YES && password == NULL )
6875password = simple_prompt ("Password: " ,100 , false);
6976
7077/*
@@ -91,7 +98,8 @@ vacuumlo(char *database, struct _param * param)
9198
9299if (PQstatus (conn )== CONNECTION_BAD &&
93100PQconnectionNeedsPassword (conn )&&
94- password == NULL )
101+ password == NULL &&
102+ param -> pg_prompt != TRI_NO )
95103{
96104PQfinish (conn );
97105password = simple_prompt ("Password: " ,100 , false);
@@ -308,6 +316,7 @@ usage(void)
308316printf (" -n don't remove large objects, just show what would be done\n" );
309317printf (" -p PORT database server port\n" );
310318printf (" -U USERNAME user name to connect as\n" );
319+ printf (" -w never prompt for password\n" );
311320printf (" -W force password prompt\n" );
312321printf (" -v write a lot of progress messages\n" );
313322printf ("\n" );
@@ -324,15 +333,15 @@ main(int argc, char **argv)
324333
325334/* Parameter handling */
326335param .pg_user = NULL ;
327- param .pg_prompt = 0 ;
336+ param .pg_prompt = TRI_DEFAULT ;
328337param .pg_host = NULL ;
329338param .pg_port = NULL ;
330339param .verbose = 0 ;
331340param .dry_run = 0 ;
332341
333342while (1 )
334343{
335- c = getopt (argc ,argv ,"?h:U:p:vnW " );
344+ c = getopt (argc ,argv ,"?h:U:p:vnwW " );
336345if (c == -1 )
337346break ;
338347
@@ -357,8 +366,11 @@ main(int argc, char **argv)
357366case 'U' :
358367param .pg_user = strdup (optarg );
359368break ;
369+ case 'w' :
370+ param .pg_prompt = TRI_NO ;
371+ break ;
360372case 'W' :
361- param .pg_prompt = 1 ;
373+ param .pg_prompt = TRI_YES ;
362374break ;
363375case 'p' :
364376port = strtol (optarg ,NULL ,10 );