7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.14 1996/07/29 20:58:42 scrappy Exp $
10
+ * $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.15 1996/07/31 02:11:23 scrappy Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -109,7 +109,7 @@ usage(char *progname)
109
109
fprintf (stderr ,"\t -q run quietly (no messages, no prompts)\n" );
110
110
fprintf (stderr ,"\t -s single step mode (prompts for each query)\n" );
111
111
fprintf (stderr ,"\t -S single line mode (i.e. query terminated by newline)\n" );
112
- fprintf (stderr ,"\t -t turn off printing of attribute headers \n" );
112
+ fprintf (stderr ,"\t -t turn off printing of headings and row count \n" );
113
113
fprintf (stderr ,"\t -T html set html3.0 table command options (cf. -H)\n" );
114
114
fprintf (stderr ,"\t -x turn on expanded output (field names on left)\n" );
115
115
exit (1 );
@@ -128,33 +128,30 @@ char *on(bool f)
128
128
static void
129
129
slashUsage (PsqlSettings * ps )
130
130
{
131
+ fprintf (stderr ,"\t \\? -- help\n" );
131
132
fprintf (stderr ,"\t \\a -- toggle field-alignment (currenty %s)\n" , on (ps -> opt .align ));
132
133
fprintf (stderr ,"\t \\C [<captn>] -- set html3 caption (currently '%s')\n" , ps -> opt .caption ? ps -> opt .caption : "" );
133
134
fprintf (stderr ,"\t \\c <dbname> -- connect to new database (currently '%s')\n" , PQdb (ps -> db ));
134
- fprintf (stderr ,"\t \\d [<table>] -- list tables in database or columns in <table>\n" );
135
- fprintf (stderr ,"\t \\d * -- list tables in database and columns in all tables\n" );
136
- fprintf (stderr ,"\t \\e [<fname>] -- edit the current query buffer or <fname>\n" );
135
+ fprintf (stderr ,"\t \\d [<table>] -- list tables in database or columns in <table>,* for all\n" );
136
+ fprintf (stderr ,"\t \\e [<fname>] -- edit the current query buffer or <fname>, \E execute too\n" );
137
137
fprintf (stderr ,"\t \\f [<sep>] -- change field separater (currently '%s')\n" , ps -> opt .fieldSep );
138
138
fprintf (stderr ,"\t \\g [<fname>] -- send query to backend [and place results in <fname>]\n" );
139
139
fprintf (stderr ,"\t \\g |<cmd> -- send query to backend and pipe results into <cmd>\n" );
140
- fprintf (stderr ,"\t \\h [<cmd>] -- help on syntax of sql commands\n" );
141
- fprintf (stderr ,"\t \\h * -- complete description of all sql commands\n" );
140
+ fprintf (stderr ,"\t \\h [<cmd>] -- help on syntax of sql commands, * for all commands\n" );
142
141
fprintf (stderr ,"\t \\H -- toggle html3 output (currently %s)\n" , on (ps -> opt .html3 ));
143
142
fprintf (stderr ,"\t \\i <fname> -- read and execute queries from filename\n" );
144
143
fprintf (stderr ,"\t \\l -- list all databases\n" );
145
- fprintf (stderr ,"\t \\m -- toggle monitor-like type-setting (currently %s)\n" , on (ps -> opt .standard ));
144
+ fprintf (stderr ,"\t \\m -- toggle monitor-like table display (currently %s)\n" , on (ps -> opt .standard ));
146
145
fprintf (stderr ,"\t \\o [<fname>] -- send all query results to <fname> or stdout\n" );
147
146
fprintf (stderr ,"\t \\o |<cmd> -- pipe all query results through <cmd>\n" );
148
147
fprintf (stderr ,"\t \\p -- print the current query buffer\n" );
149
148
fprintf (stderr ,"\t \\q -- quit\n" );
150
- fprintf (stderr ,"\t \\r [<fname>] -- edit <fname> then execute on save \n" );
149
+ fprintf (stderr ,"\t \\r -- reset(clear) the query buffer \n" );
151
150
fprintf (stderr ,"\t \\s [<fname>] -- print history or save it in <fname>\n" );
152
- fprintf (stderr ,"\t \\t -- toggle table output header (currently %s)\n" , on (ps -> opt .header ));
151
+ fprintf (stderr ,"\t \\t -- toggle table headings and row count (currently %s)\n" , on (ps -> opt .header ));
153
152
fprintf (stderr ,"\t \\T [<html>] -- set html3.0 <table ...> options (currently '%s')\n" , ps -> opt .tableOpt ? ps -> opt .tableOpt : "" );
154
153
fprintf (stderr ,"\t \\x -- toggle expanded output (currently %s)\n" , on (ps -> opt .expanded ));
155
- fprintf (stderr ,"\t \\z -- zorch current query buffer (i.e clear it)\n" );
156
154
fprintf (stderr ,"\t \\! [<cmd>] -- shell escape or command\n" );
157
- fprintf (stderr ,"\t \\? -- help\n" );
158
155
}
159
156
160
157
PGresult *
@@ -624,7 +621,7 @@ HandleSlashCmds(PsqlSettings *settings,
624
621
decode (optarg );
625
622
}
626
623
switch (line [1 ])
627
- {
624
+ {
628
625
case 'a' : /* toggles to align fields on output */
629
626
toggle (settings , & settings -> opt .align , "field alignment" );
630
627
break ;
@@ -641,7 +638,7 @@ HandleSlashCmds(PsqlSettings *settings,
641
638
}
642
639
break ;
643
640
case 'c' : /* \c means connect to new database */
644
- {
641
+ {
645
642
char * dbname = PQdb (settings -> db );
646
643
if (!optarg ) {
647
644
fprintf (stderr ,"\\c must be followed by a database name\n" );
@@ -687,7 +684,7 @@ HandleSlashCmds(PsqlSettings *settings,
687
684
}
688
685
break ;
689
686
case 'e' :
690
- {
687
+ {
691
688
int fd ;
692
689
char tmp [64 ];
693
690
char * fname ;
@@ -743,7 +740,46 @@ HandleSlashCmds(PsqlSettings *settings,
743
740
if (query [strlen (query )- 1 ]== ';' )
744
741
return 0 ;
745
742
break ;
746
- }
743
+ }
744
+ case 'E' :
745
+ {
746
+ FILE * fd ;
747
+ static char * lastfile ;
748
+ struct stat st , st2 ;
749
+ if (optarg )
750
+ {
751
+ if (lastfile )
752
+ free (lastfile );
753
+ lastfile = malloc (strlen (optarg + 1 ));
754
+ if (!lastfile )
755
+ {
756
+ perror ("malloc" );
757
+ exit (1 );
758
+ }
759
+ strcpy (lastfile , optarg );
760
+ } else if (!lastfile )
761
+ {
762
+ fprintf (stderr ,"\\r must be followed by a file name initially\n" );
763
+ break ;
764
+ }
765
+ stat (lastfile , & st );
766
+ editFile (lastfile );
767
+ if ((stat (lastfile , & st2 ) == -1 ) || ((fd = fopen (lastfile , "r" )) == NULL ))
768
+ {
769
+ perror (lastfile );
770
+ break ;
771
+ }
772
+ if (st2 .st_mtime == st .st_mtime )
773
+ {
774
+ if (!settings -> quiet )
775
+ fprintf (stderr , "warning: %s not modified. query not executed\n" , lastfile );
776
+ fclose (fd );
777
+ break ;
778
+ }
779
+ MainLoop (settings , fd );
780
+ fclose (fd );
781
+ break ;
782
+ }
747
783
case 'f' :
748
784
{
749
785
char * fs = DEFAULT_FIELD_SEP ;
@@ -760,12 +796,12 @@ HandleSlashCmds(PsqlSettings *settings,
760
796
fprintf (stderr , "field separater changed to '%s'\n" , settings -> opt .fieldSep );
761
797
break ;
762
798
}
763
- case 'g' : /* \g means send query */
799
+ case 'g' : /* \g means send query */
764
800
settings -> gfname = optarg ;
765
801
status = 0 ;
766
802
break ;
767
803
case 'h' :
768
- {
804
+ {
769
805
char * cmd ;
770
806
int i , numCmds ;
771
807
int all_help = 0 ;
@@ -811,7 +847,7 @@ HandleSlashCmds(PsqlSettings *settings,
811
847
printf ("command not found, try \\h with no arguments to see available help\n" );
812
848
}
813
849
break ;
814
- }
850
+ }
815
851
case 'i' : /* \i is include file */
816
852
{
817
853
FILE * fd ;
@@ -829,7 +865,7 @@ HandleSlashCmds(PsqlSettings *settings,
829
865
MainLoop (settings , fd );
830
866
fclose (fd );
831
867
break ;
832
- }
868
+ }
833
869
case 'l' : /* \l is list database */
834
870
listAllDbs (settings );
835
871
break ;
@@ -850,45 +886,11 @@ HandleSlashCmds(PsqlSettings *settings,
850
886
case 'q' : /* \q is quit */
851
887
status = 2 ;
852
888
break ;
853
- case 'r' :
854
- {
855
- FILE * fd ;
856
- static char * lastfile ;
857
- struct stat st , st2 ;
858
- if (optarg )
859
- {
860
- if (lastfile )
861
- free (lastfile );
862
- lastfile = malloc (strlen (optarg + 1 ));
863
- if (!lastfile )
864
- {
865
- perror ("malloc" );
866
- exit (1 );
867
- }
868
- strcpy (lastfile , optarg );
869
- } else if (!lastfile )
870
- {
871
- fprintf (stderr ,"\\r must be followed by a file name initially\n" );
872
- break ;
873
- }
874
- stat (lastfile , & st );
875
- editFile (lastfile );
876
- if ((stat (lastfile , & st2 ) == -1 ) || ((fd = fopen (lastfile , "r" )) == NULL ))
877
- {
878
- perror (lastfile );
879
- break ;
880
- }
881
- if (st2 .st_mtime == st .st_mtime )
882
- {
883
- if (!settings -> quiet )
884
- fprintf (stderr , "warning: %s not modified. query not executed\n" , lastfile );
885
- fclose (fd );
886
- break ;
887
- }
888
- MainLoop (settings , fd );
889
- fclose (fd );
890
- break ;
891
- }
889
+ case 'r' : /* reset(clear) the buffer */
890
+ query [0 ]= '\0' ;
891
+ if (!settings -> quiet )
892
+ fprintf (stderr , "buffer reset(cleared)\n" );
893
+ break ;
892
894
case 's' : /* \s is save history to a file */
893
895
if (!optarg )
894
896
optarg = "/dev/tty" ;
@@ -913,7 +915,7 @@ HandleSlashCmds(PsqlSettings *settings,
913
915
}
914
916
break ;
915
917
case 't' : /* toggle headers */
916
- toggle (settings , & settings -> opt .header , "output headers " );
918
+ toggle (settings , & settings -> opt .header , "output headings and row count " );
917
919
break ;
918
920
case 'T' : /* define html <table ...> option */
919
921
if (settings -> opt .tableOpt )
@@ -930,11 +932,6 @@ HandleSlashCmds(PsqlSettings *settings,
930
932
case 'x' :
931
933
toggle (settings , & settings -> opt .expanded , "expanded table representation" );
932
934
break ;
933
- case 'z' : /* zorch buffer */
934
- query [0 ]= '\0' ;
935
- if (!settings -> quiet )
936
- fprintf (stderr , "zorched current query buffer\n" );
937
- break ;
938
935
case '!' :
939
936
if (!optarg ) {
940
937
char * sys ;
0 commit comments