Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4e82924

Browse files
committed
Row count patch from Bruce
1 parent 7d2000e commit 4e82924

File tree

2 files changed

+38
-26
lines changed

2 files changed

+38
-26
lines changed

src/interfaces/libpq/fe-exec.c

+35-23
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.11 1996/07/31 06:05:46 scrappy Exp $
10+
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.12 1996/07/31 18:40:09 scrappy Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -829,21 +829,22 @@ PQprint(FILE *fout,
829829
nFields = PQnfields(res);
830830

831831
if ( nFields > 0 ) { /* only print tuples with at least 1 field. */
832-
int i,j;
833-
int nTups;
834-
int *fieldMax=NULL; /* keep -Wall happy */
835-
unsigned char *fieldNotNum=NULL; /* keep -Wall happy */
836-
char **fields=NULL; /*keep -Wall happy */
832+
int i,j;
833+
int nTups;
834+
int *fieldMax=NULL; /* in case we don't use them */
835+
unsigned char *fieldNotNum=NULL;
836+
char *border=NULL;
837+
char **fields=NULL;
837838
char **fieldNames;
838839
int fieldMaxLen=0;
839-
char *border=NULL;
840-
int numFieldName;
840+
int numFieldName;
841841
int fs_len=strlen(po->fieldSep);
842-
int total_line_length = 0;
843-
int usePipe = 0;
844-
char *pagerenv;
842+
int total_line_length = 0;
843+
int usePipe = 0;
844+
char *pagerenv;
845+
char buf[8192*2+1];
845846

846-
nTups = PQntuples(res);
847+
nTups = PQntuples(res);
847848
if (!(fieldNames=(char **)calloc(nFields, sizeof (char *))))
848849
{
849850
perror("calloc");
@@ -882,7 +883,10 @@ PQprint(FILE *fout,
882883

883884
if (fout == NULL)
884885
fout = stdout;
885-
if (po->pager && fout == stdout && isatty(fileno(stdout))) {
886+
if (po->pager && fout == stdout &&
887+
isatty(fileno(stdin)) &&
888+
isatty(fileno(stdout)))
889+
{
886890
/* try to pipe to the pager program if possible */
887891
#ifdef TIOCGWINSZ
888892
if (ioctl(fileno(stdout),TIOCGWINSZ,&screen_size) == -1 ||
@@ -907,8 +911,7 @@ PQprint(FILE *fout,
907911
screen_size.ws_row -
908912
(po->header != 0) *
909913
(total_line_length / screen_size.ws_col + 1) * 2
910-
/*- 1 */ /* newline at end of tuple list */
911-
/*- (quiet == 0)*/
914+
- (po->header != 0) *2 /* row count and newline */
912915
)))
913916
{
914917
fout = popen(pagerenv, "w");
@@ -927,7 +930,8 @@ PQprint(FILE *fout,
927930
perror("calloc");
928931
exit(1);
929932
}
930-
} else
933+
}
934+
else
931935
if (po->header && !po->html3)
932936
{
933937
if (po->expanded)
@@ -936,7 +940,8 @@ PQprint(FILE *fout,
936940
fprintf(fout, "%-*s%s Value\n", fieldMaxLen-fs_len, "Field", po->fieldSep);
937941
else
938942
fprintf(fout, "%s%sValue\n", "Field", po->fieldSep);
939-
} else
943+
}
944+
else
940945
{
941946
int len=0;
942947
for (j=0; j < nFields; j++)
@@ -959,16 +964,17 @@ PQprint(FILE *fout,
959964
else
960965
fprintf(fout, "<centre><h2>Query retrieved %d tuples * %d fields</h2></centre>\n", nTups, nFields);
961966
}
962-
for (i = 0; i < nTups; i++) {
963-
char buf[8192*2+1];
967+
for (i = 0; i < nTups; i++)
968+
{
964969
if (po->expanded)
965970
{
966971
if (po->html3)
967972
fprintf(fout, "<table %s><caption align=high>%d</caption>\n", po->tableOpt? po->tableOpt: "", i);
968973
else
969974
fprintf(fout, "-- RECORD %d --\n", i);
970975
}
971-
for (j = 0; j < nFields; j++) {
976+
for (j = 0; j < nFields; j++)
977+
{
972978
char *pval, *p, *o;
973979
int plen;
974980
if ((plen=PQgetlength(res,i,j))<1 || !(pval=PQgetvalue(res,i,j)) || !*pval)
@@ -996,7 +1002,8 @@ PQprint(FILE *fout,
9961002
exit(1);
9971003
}
9981004
strcpy(fields[i*nFields+j], buf);
999-
} else
1005+
}
1006+
else
10001007
{
10011008
if (po->expanded)
10021009
{
@@ -1089,7 +1096,8 @@ PQprint(FILE *fout,
10891096
{
10901097
fprintf(fout, "<th align=%s>%s</th>", fieldNotNum[j]? "left": "right",
10911098
fieldNames[j]);
1092-
} else
1099+
}
1100+
else
10931101
{
10941102
int n=strlen(s);
10951103
if (n>fieldMax[j])
@@ -1139,10 +1147,14 @@ PQprint(FILE *fout,
11391147
}
11401148
free(fields);
11411149
}
1150+
if (po->header && !po->html3)
1151+
fprintf (fout, "(%d row%s)\n\n",PQntuples(res),
1152+
(PQntuples(res) == 1) ? "" : "s");
11421153
free(fieldMax);
11431154
free(fieldNotNum);
11441155
free(fieldNames);
1145-
if (usePipe) {
1156+
if (usePipe)
1157+
{
11461158
pclose(fout);
11471159
signal(SIGPIPE, SIG_DFL);
11481160
}

src/interfaces/libpq/libpq-fe.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
* Copyright (c) 1994, Regents of the University of California
88
*
9-
* $Id: libpq-fe.h,v 1.4 1996/07/27 02:55:23 scrappy Exp $
9+
* $Id: libpq-fe.h,v 1.5 1996/07/31 18:40:12 scrappy Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -128,12 +128,12 @@ typedef struct pg_result{
128128
} PGresult;
129129

130130
struct _PQprintOpt {
131-
bool header; /* print output field headers or not */
131+
bool header; /* print output field headings and row count */
132132
bool align; /* fill align the fields */
133133
bool standard; /* old brain dead format */
134134
bool html3; /* output html tables */
135135
bool expanded; /* expand tables */
136-
bool pager; /* use pager for output if needed */
136+
bool pager; /* use pager for output if needed */
137137
char *fieldSep; /* field separator */
138138
char *tableOpt; /* insert to HTML <table ...> */
139139
char *caption; /* HTML <caption> */

0 commit comments

Comments
 (0)