table

Помоћни програм из командне линије за форматирање и приказ CSV-а
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 1a401f51c5397cd4bb26508c850c4a3908221add
родитељ 29d5023c38e8629769473c5c6a93c535dd50efea
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Tue, 16 May 2023 23:01:07 +0200

Bugfix: within_column wasn't taking buffering into account

Signed-off-by: Страхиња Радић <contact@strahinja.org>

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

diff --git a/table.c b/table.c @@ -424,7 +424,7 @@ round_div(UINT a, UINT b) } int -within_column(size_t column_start) +within_column(size_t column_start, size_t current_rune_column) { return format ? (current_rune_column < column_start + *(format + current_table_column)) @@ -749,7 +749,7 @@ do_column: printf("%s", u8ch); column_start++; } - else if (!within_column(column_start)) + else if (!within_column(column_start, current_rune_column)) { if (current_table_column == table_columns - 1) { @@ -798,7 +798,7 @@ empty_line: printf("%s", u8ch); while (current_table_column + 1 < table_columns) { - while (within_column(column_start)) + while (within_column(column_start, current_rune_column)) { printf(" "); current_rune_column++; @@ -815,7 +815,7 @@ empty_line: current_table_column++; current_rune_column++; } - while (within_column(column_start)) + while (within_column(column_start, current_rune_column)) { printf(" "); current_rune_column++; @@ -882,7 +882,7 @@ continue_line: : ALIGN_LEFT, &current_rune_column); - while (within_column(column_start)) + while (within_column(column_start, current_rune_column)) { printf(" "); current_rune_column++; @@ -917,7 +917,8 @@ continue_line: } else if (!ch_len) /* UTF-8 error */ { - if (within_column(column_start)) + if (within_column(column_start, + current_rune_column + outbufrunelen)) { sprintf((char*)poutbuf, "%c", *pline++); poutbuf++; @@ -927,7 +928,8 @@ continue_line: } else if (uch == (u32)L'\t' && expand_tabs) { - while (within_column(column_start)) + while (within_column(column_start, + current_rune_column + outbufrunelen)) { sprintf((char*)poutbuf, " "); poutbuf++; @@ -942,7 +944,8 @@ continue_line: else { pch_end = pline + ch_len; - if (within_column(column_start)) + if (within_column(column_start, + current_rune_column + outbufrunelen)) { while (pline != pch_end) poutbuf += sprintf((char*)poutbuf, "%c", @@ -980,7 +983,7 @@ done_line:; } while (current_table_column < table_columns - 1) { - while (within_column(column_start)) + while (within_column(column_start, current_rune_column)) { printf(" "); current_rune_column++; @@ -997,7 +1000,7 @@ done_line:; current_table_column++; current_rune_column++; } - while (within_column(column_start)) + while (within_column(column_start, current_rune_column)) { printf(" "); current_rune_column++; @@ -1034,7 +1037,7 @@ do_bottom_border: *table_symbols[current_symbol_set][6]); column_start++; } - else if (!within_column(column_start)) + else if (!within_column(column_start, current_rune_column)) { if (current_table_column == table_columns - 1) {