Add numeric separator support for latex and troff output methods.
This commit is contained in:
parent
75c76e93c7
commit
4a8bbbd2ee
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.65 2005/07/14 06:49:58 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/bin/psql/print.c,v 1.66 2005/07/14 07:32:01 momjian Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "common.h"
|
||||
@ -37,7 +37,7 @@ pg_local_malloc(size_t size)
|
||||
tmp = malloc(size);
|
||||
if (!tmp)
|
||||
{
|
||||
psql_error("out of memory\n");
|
||||
fprintf(stderr, _("out of memory\n"));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return tmp;
|
||||
@ -999,7 +999,8 @@ static void
|
||||
print_latex_text(const char *title, const char *const *headers,
|
||||
const char *const *cells, const char *const *footers,
|
||||
const char *opt_align, bool opt_tuples_only,
|
||||
unsigned short int opt_border, FILE *fout)
|
||||
char *opt_numericsep, unsigned short int opt_border,
|
||||
FILE *fout)
|
||||
{
|
||||
unsigned int col_count = 0;
|
||||
unsigned int i;
|
||||
@ -1059,7 +1060,18 @@ print_latex_text(const char *title, const char *const *headers,
|
||||
/* print cells */
|
||||
for (i = 0, ptr = cells; *ptr; i++, ptr++)
|
||||
{
|
||||
latex_escaped_print(*ptr, fout);
|
||||
if (strlen(*ptr) != 0 &&
|
||||
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
|
||||
{
|
||||
char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
|
||||
|
||||
strcpy(my_cell, *ptr);
|
||||
format_numericsep(my_cell, opt_numericsep);
|
||||
latex_escaped_print(my_cell, fout);
|
||||
free(my_cell);
|
||||
}
|
||||
else
|
||||
latex_escaped_print(*ptr, fout);
|
||||
|
||||
if ((i + 1) % col_count == 0)
|
||||
fputs(" \\\\\n", fout);
|
||||
@ -1091,7 +1103,8 @@ static void
|
||||
print_latex_vertical(const char *title, const char *const *headers,
|
||||
const char *const *cells, const char *const *footers,
|
||||
const char *opt_align, bool opt_tuples_only,
|
||||
unsigned short int opt_border, FILE *fout)
|
||||
char *opt_numericsep, unsigned short int opt_border,
|
||||
FILE *fout)
|
||||
{
|
||||
unsigned int col_count = 0;
|
||||
unsigned int i;
|
||||
@ -1161,7 +1174,18 @@ print_latex_vertical(const char *title, const char *const *headers,
|
||||
if (footers && !opt_tuples_only)
|
||||
for (ptr = footers; *ptr; ptr++)
|
||||
{
|
||||
latex_escaped_print(*ptr, fout);
|
||||
if (strlen(*ptr) != 0 &&
|
||||
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
|
||||
{
|
||||
char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
|
||||
|
||||
strcpy(my_cell, *ptr);
|
||||
format_numericsep(my_cell, opt_numericsep);
|
||||
latex_escaped_print(my_cell, fout);
|
||||
free(my_cell);
|
||||
}
|
||||
else
|
||||
latex_escaped_print(*ptr, fout);
|
||||
fputs(" \\\\\n", fout);
|
||||
}
|
||||
|
||||
@ -1197,7 +1221,8 @@ static void
|
||||
print_troff_ms_text(const char *title, const char *const *headers,
|
||||
const char *const *cells, const char *const *footers,
|
||||
const char *opt_align, bool opt_tuples_only,
|
||||
unsigned short int opt_border, FILE *fout)
|
||||
char *opt_numericsep, unsigned short int opt_border,
|
||||
FILE *fout)
|
||||
{
|
||||
unsigned int col_count = 0;
|
||||
unsigned int i;
|
||||
@ -1245,14 +1270,23 @@ print_troff_ms_text(const char *title, const char *const *headers,
|
||||
}
|
||||
|
||||
if (!opt_tuples_only)
|
||||
{
|
||||
fputs("\n_\n", fout);
|
||||
}
|
||||
|
||||
/* print cells */
|
||||
for (i = 0, ptr = cells; *ptr; i++, ptr++)
|
||||
{
|
||||
troff_ms_escaped_print(*ptr, fout);
|
||||
if (strlen(*ptr) != 0 &&
|
||||
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
|
||||
{
|
||||
char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
|
||||
|
||||
strcpy(my_cell, *ptr);
|
||||
format_numericsep(my_cell, opt_numericsep);
|
||||
troff_ms_escaped_print(my_cell, fout);
|
||||
free(my_cell);
|
||||
}
|
||||
else
|
||||
troff_ms_escaped_print(*ptr, fout);
|
||||
|
||||
if ((i + 1) % col_count == 0)
|
||||
fputc('\n', fout);
|
||||
@ -1281,7 +1315,8 @@ static void
|
||||
print_troff_ms_vertical(const char *title, const char *const *headers,
|
||||
const char *const *cells, const char *const *footers,
|
||||
const char *opt_align, bool opt_tuples_only,
|
||||
unsigned short int opt_border, FILE *fout)
|
||||
char *opt_numericsep, unsigned short int opt_border,
|
||||
FILE *fout)
|
||||
{
|
||||
unsigned int col_count = 0;
|
||||
unsigned int i;
|
||||
@ -1324,7 +1359,6 @@ print_troff_ms_vertical(const char *title, const char *const *headers,
|
||||
{
|
||||
if (!opt_tuples_only)
|
||||
{
|
||||
|
||||
if (current_format != 1)
|
||||
{
|
||||
if (opt_border == 2 && i > 0)
|
||||
@ -1356,7 +1390,19 @@ print_troff_ms_vertical(const char *title, const char *const *headers,
|
||||
|
||||
troff_ms_escaped_print(headers[i % col_count], fout);
|
||||
fputc('\t', fout);
|
||||
troff_ms_escaped_print(*ptr, fout);
|
||||
if (strlen(*ptr) != 0 &&
|
||||
opt_numericsep != NULL && strlen(opt_numericsep) > 0)
|
||||
{
|
||||
char *my_cell = pg_local_malloc(len_with_numericsep(*ptr) + 1);
|
||||
|
||||
strcpy(my_cell, *ptr);
|
||||
format_numericsep(my_cell, opt_numericsep);
|
||||
troff_ms_escaped_print(my_cell, fout);
|
||||
free(my_cell);
|
||||
}
|
||||
else
|
||||
troff_ms_escaped_print(*ptr, fout);
|
||||
|
||||
fputc('\n', fout);
|
||||
}
|
||||
|
||||
@ -1529,19 +1575,21 @@ printTable(const char *title,
|
||||
case PRINT_LATEX:
|
||||
if (use_expanded)
|
||||
print_latex_vertical(title, headers, cells, footers, align,
|
||||
opt->tuples_only, border, output);
|
||||
opt->tuples_only, opt->numericSep,
|
||||
border, output);
|
||||
else
|
||||
print_latex_text(title, headers, cells, footers, align,
|
||||
opt->tuples_only, border, output);
|
||||
opt->tuples_only, opt->numericSep,
|
||||
border, output);
|
||||
break;
|
||||
case PRINT_TROFF_MS:
|
||||
if (use_expanded)
|
||||
print_troff_ms_vertical(title, headers, cells, footers,
|
||||
align, opt->tuples_only,
|
||||
print_troff_ms_vertical(title, headers, cells, footers, align,
|
||||
opt->tuples_only, opt->numericSep,
|
||||
border, output);
|
||||
else
|
||||
print_troff_ms_text(title, headers, cells, footers,
|
||||
align, opt->tuples_only,
|
||||
print_troff_ms_text(title, headers, cells, footers, align,
|
||||
opt->tuples_only, opt->numericSep,
|
||||
border, output);
|
||||
break;
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user