[PATCH 4/6] psql: Pass table formatting object to text output functions - Mailing list pgsql-hackers

From Roger Leigh
Subject [PATCH 4/6] psql: Pass table formatting object to text output functions
Date
Msg-id 1250956790-18404-5-git-send-email-rleigh@debian.org
Whole thread Raw
In response to [PATCH 1/6] psql: Abstract table formatting characters used for different line types.  (Roger Leigh <rleigh@debian.org>)
Responses [PATCH 5/6] psql: print_aligned_text uses table formatting  (Roger Leigh <rleigh@debian.org>)
List pgsql-hackers
print_aligned_text and print_aligned_vertical, and their
helper fuctions pass the table formatting and (where
applicable) line style information to allow correct
printing of table lines.

Signed-off-by: Roger Leigh <rleigh@debian.org>
---src/bin/psql/print.c |   23 ++++++++++++++---------1 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 6f5dcd4..641fd63 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -387,7 +387,9 @@ static const struct printTextFormat utf8format =/* draw "line" */static
void_print_horizontal_line(constunsigned int ncolumns, const unsigned int *widths,
 
-                       unsigned short border, FILE *fout)
+               unsigned short border, printTextRule pos,
+               const printTextFormat *format,
+               FILE *fout){    unsigned int i,                j;
@@ -424,7 +426,8 @@ _print_horizontal_line(const unsigned int ncolumns, const unsigned int *widths, *    Print pretty
boxesaround cells. */static void
 
-print_aligned_text(const printTableContent *cont, FILE *fout)
+print_aligned_text(const printTableContent *cont, const printTextFormat *format,
+           FILE *fout){    bool        opt_tuples_only = cont->opt->tuples_only;    bool        opt_numeric_locale =
cont->opt->numericLocale;
@@ -736,7 +739,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)            int
curr_nl_line;           if (opt_border == 2)
 
-                _print_horizontal_line(col_count, width_wrap, opt_border, fout);
+                _print_horizontal_line(col_count, width_wrap, opt_border, PRINT_RULE_TOP, format, fout);
for(i = 0; i < col_count; i++)                pg_wcsformat((unsigned char *) cont->headers[i],
 
@@ -792,7 +795,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)                fputc('\n', fout);
      }
 
-            _print_horizontal_line(col_count, width_wrap, opt_border, fout);
+            _print_horizontal_line(col_count, width_wrap, opt_border, PRINT_RULE_MIDDLE, format, fout);        }    }
@@ -935,7 +938,7 @@ print_aligned_text(const printTableContent *cont, FILE *fout)    if (cont->opt->stop_table)    {
   if (opt_border == 2 && !cancel_pressed)
 
-            _print_horizontal_line(col_count, width_wrap, opt_border, fout);
+            _print_horizontal_line(col_count, width_wrap, opt_border, PRINT_RULE_BOTTOM, format, fout);        /*
printfooters */        if (cont->footers && !opt_tuples_only && !cancel_pressed)
 
@@ -970,7 +973,9 @@ print_aligned_text(const printTableContent *cont, FILE *fout)static void
-print_aligned_vertical(const printTableContent *cont, FILE *fout)
+print_aligned_vertical(const printTableContent *cont,
+               const printTextFormat *format,
+               FILE *fout){    bool        opt_tuples_only = cont->opt->tuples_only;    bool        opt_numeric_locale
=cont->opt->numericLocale;
 
@@ -2258,7 +2263,7 @@ printTable(const printTableContent *cont, FILE *fout, FILE *flog)    /* print the stuff */    if
(flog)
-        print_aligned_text(cont, flog);
+        print_aligned_text(cont, text_format, flog);    switch (cont->opt->format)    {
@@ -2271,9 +2276,9 @@ printTable(const printTableContent *cont, FILE *fout, FILE *flog)        case PRINT_ALIGNED:
 case PRINT_WRAPPED:            if (cont->opt->expanded)
 
-                print_aligned_vertical(cont, fout);
+                print_aligned_vertical(cont, text_format, fout);            else
-                print_aligned_text(cont, fout);
+                print_aligned_text(cont, text_format, fout);            break;        case PRINT_HTML:            if
(cont->opt->expanded)
-- 
1.6.3.3



pgsql-hackers by date:

Previous
From: Roger Leigh
Date:
Subject: Unicode UTF-8 table formatting for psql text output
Next
From: Roger Leigh
Date:
Subject: [PATCH 6/6] psql: print_aligned_vertical uses table formatting