7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.160 1998/09/03 05:08:25 momjian Exp $
10
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.161 1998/09/21 02:25:23 momjian Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -156,6 +156,7 @@ static int tableList(PsqlSettings *pset, bool deep_tablelist,
156
156
static int tableDesc (PsqlSettings * pset , char * table , FILE * fout );
157
157
static int objectDescription (PsqlSettings * pset , char * object );
158
158
static int rightsList (PsqlSettings * pset );
159
+ static void emitNtimes (FILE * fout , const char * str , int N );
159
160
static void prompt_for_password (char * username , char * password );
160
161
161
162
static char * gets_noreadline (char * prompt , FILE * source );
@@ -244,7 +245,7 @@ slashUsage(PsqlSettings *pset)
244
245
245
246
/* if you add/remove a line here, change the row test above */
246
247
fprintf (fout , " \\? -- help\n" );
247
- fprintf (fout , " \\a -- toggle field-alignment (currenty %s)\n" , on (pset -> opt .align ));
248
+ fprintf (fout , " \\a -- toggle field-alignment (currently %s)\n" , on (pset -> opt .align ));
248
249
fprintf (fout , " \\C [<captn>] -- set html3 caption (currently '%s')\n" , pset -> opt .caption ? pset -> opt .caption : "" );
249
250
fprintf (fout , " \\connect <dbname|-> <user> -- connect to new database (currently '%s')\n" , PQdb (pset -> db ));
250
251
fprintf (fout , " \\copy table {from | to} <fname>\n" );
@@ -540,6 +541,8 @@ rightsList(PsqlSettings *pset)
540
541
char listbuf [512 ];
541
542
int nColumns ;
542
543
int i ;
544
+ int maxCol1Len ;
545
+ int maxCol2Len ;
543
546
int usePipe = 0 ;
544
547
char * pagerenv ;
545
548
FILE * fout ;
@@ -583,21 +586,50 @@ rightsList(PsqlSettings *pset)
583
586
else
584
587
fout = stdout ;
585
588
589
+ /* choose column widths */
590
+ maxCol1Len = strlen ("Relation" );
591
+ maxCol2Len = strlen ("Grant/Revoke Permissions" );
592
+ for (i = 0 ; i < PQntuples (res ); i ++ )
593
+ {
594
+ int l = strlen (PQgetvalue (res , i , 0 ));
595
+ if (l > maxCol1Len )
596
+ maxCol1Len = l ;
597
+ l = strlen (PQgetvalue (res , i , 1 ));
598
+ if (l > maxCol2Len )
599
+ maxCol2Len = l ;
600
+ }
601
+
586
602
/* Display the information */
587
603
588
604
fprintf (fout , "\nDatabase = %s\n" , PQdb (pset -> db ));
589
- fprintf (fout , " +------------------+----------------------------------------------------+\n" );
590
- fprintf (fout , " | Relation | Grant/Revoke Permissions |\n" );
591
- fprintf (fout , " +------------------+----------------------------------------------------+\n" );
605
+ fprintf (fout , " +" );
606
+ emitNtimes (fout , "-" , maxCol1Len + 2 );
607
+ fprintf (fout , "+" );
608
+ emitNtimes (fout , "-" , maxCol2Len + 2 );
609
+ fprintf (fout , "+\n" );
610
+ fprintf (fout , " | %-*s | %-*s |\n" ,
611
+ maxCol1Len , "Relation" ,
612
+ maxCol2Len , "Grant/Revoke Permissions" );
613
+ fprintf (fout , " +" );
614
+ emitNtimes (fout , "-" , maxCol1Len + 2 );
615
+ fprintf (fout , "+" );
616
+ emitNtimes (fout , "-" , maxCol2Len + 2 );
617
+ fprintf (fout , "+\n" );
592
618
593
619
/* next, print out the instances */
594
620
for (i = 0 ; i < PQntuples (res ); i ++ )
595
621
{
596
- fprintf (fout , " | %-16.16s" , PQgetvalue ( res , i , 0 ));
597
- fprintf ( fout , " | %-50.50s | " , PQgetvalue (res , i , 1 ));
598
- fprintf ( fout , "\n" );
622
+ fprintf (fout , " | %-*s | %-*s |\n" ,
623
+ maxCol1Len , PQgetvalue (res , i , 0 ),
624
+ maxCol2Len , PQgetvalue ( res , i , 1 ) );
599
625
}
600
- fprintf (fout , " +------------------+----------------------------------------------------+\n" );
626
+
627
+ fprintf (fout , " +" );
628
+ emitNtimes (fout , "-" , maxCol1Len + 2 );
629
+ fprintf (fout , "+" );
630
+ emitNtimes (fout , "-" , maxCol2Len + 2 );
631
+ fprintf (fout , "+\n" );
632
+
601
633
PQclear (res );
602
634
if (usePipe )
603
635
{
@@ -614,6 +646,14 @@ rightsList(PsqlSettings *pset)
614
646
}
615
647
}
616
648
649
+ static void emitNtimes (FILE * fout , const char * str , int N )
650
+ {
651
+ int i ;
652
+ for (i = 0 ; i < N ; i ++ ) {
653
+ fputs (str , fout );
654
+ }
655
+ }
656
+
617
657
/*
618
658
* Describe a table
619
659
*
0 commit comments