table

Помоћни програм из командне линије за форматирање и приказ CSV-а
git clone https://git.sr.ht/~strahinja/table
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 9c0145f21e2077642b3fd6473326d0f0dffff557
родитељ d1c6ab6711445cba5ffb974c8d65b4b3c0a855b5
Аутор: Страхиња Радић <sr@strahinja.org>
Датум:   Sun, 19 Apr 2026 18:39:47 +0000

Apply {rune,table}_columns sanity checks with -f too

Diffstat:
Mtable.c | 26+++++++++-----------------
измењених датотека: 1, додавања: 9(+), брисања: 17(-)

diff --git a/table.c b/table.c @@ -974,18 +974,19 @@ do_input: table_columns = 1; /* Sanity check */ - if (rune_columns < 0 || rune_columns < (ssize_t)table_columns + 2) + if (rune_columns < 0 || rune_columns < (ssize_t)(2 * table_columns + 3)) { - warning("Columns adjusted to %u", table_columns + 2); - rune_columns = table_columns + 2; + warning("Columns adjusted to a reasonable minimum, %u", + 2 * table_columns + 3); + rune_columns = 2 * table_columns + 3; } - assert(rune_columns >= (ssize_t)table_columns + 2); + assert(rune_columns >= (ssize_t)(2 * table_columns + 3)); if (format && !border_mode) { int* pformat = format; int format_sum = 0; - while (*pformat) + while (*pformat && pformat - format < (ssize_t)table_columns) format_sum += *pformat++; pformat = format; while (*pformat && format_sum) @@ -993,26 +994,17 @@ do_input: *pformat = round_div((rune_columns - table_columns - 2) * (*pformat), format_sum); + assert(*pformat > 0); pformat++; } } else - format_value - = (rune_columns - table_columns - 2) / table_columns; - - if (format_value < 1) { - warning("Impossible to fit %ld table columns into %ld rune " - "columns (%ld-%ld-2)/%ld=%d), adjusting rune columns " - "to %ld", - table_columns, rune_columns, rune_columns, - table_columns, table_columns, format_value, - 2 * table_columns + 2); - rune_columns = 2 * table_columns + 2; format_value = (rune_columns - table_columns - 2) / table_columns; + + assert(format_value >= 1); } - assert(format_value > 0); current_table_column = 0; column_start = 0;