table

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

чување 6043742f7d8d15505ad7d81c5b974c56f6d1f251
родитељ 5c30e5c6c1a962e3099ef88e71e7caf19561925b
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Fri,  7 Apr 2023 19:27:45 +0200

table.c: Source code optimization - use goto to decrease indentation, move code common for all branches outside of the conditionals

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

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

diff --git a/table.c b/table.c @@ -497,7 +497,7 @@ do_arg: } else { -continue_current_arg: + continue_current_arg: if (cmd == CMD_COLUMNS) { if (set_columns(arg, &rune_columns)) @@ -855,62 +855,59 @@ done_input: free(line); /* Bottom border */ - if (output_lines) + if (!output_lines) + goto skip_bottom_border; + + current_table_column = 0; + current_rune_column = 0; + column_start = 0; + +do_bottom_border: + if (current_table_column >= table_columns) + goto done_bottom_border; + + if (current_rune_column == 0) + { + u8len = u32_char_to_u8(u8ch, + *table_symbols[current_symbol_set][6]); + column_start++; + } + else if (!within_column(column_start)) { - current_table_column = 0; - current_rune_column = 0; - column_start = 0; - while (current_table_column < table_columns) + if (current_table_column == table_columns - 1) { - if (current_rune_column == 0) - { - u8len = u32_char_to_u8(u8ch, - *table_symbols[current_symbol_set][6]); - u8ch[u8len] = 0; - printf("%s", u8ch); - column_start++; - } - else if (!within_column(column_start)) - { - if (current_table_column == table_columns - 1) - { - u8len = u32_char_to_u8(u8ch, - *table_symbols[current_symbol_set] - [8]); - u8ch[u8len] = 0; - printf("%s", u8ch); - current_table_column++; - } - else - { - u8len = u32_char_to_u8(u8ch, - *table_inner_symbols - [current_inner_symbol_set] - [2]); - u8ch[u8len] = 0; - printf("%s", u8ch); - column_start++; - if (format) - column_start += *(format - + current_table_column); - else - column_start += format_value; - current_table_column++; - } - } + u8len = u32_char_to_u8(u8ch, + *table_symbols[current_symbol_set][8]); + current_table_column++; + } + else + { + u8len = u32_char_to_u8(u8ch, + *table_inner_symbols[current_inner_symbol_set] + [2]); + column_start++; + if (format) + column_start + += *(format + current_table_column); else - { - u8len = u32_char_to_u8(u8ch, - *table_symbols[current_symbol_set][7]); - u8ch[u8len] = 0; - printf("%s", u8ch); - } - current_rune_column++; + column_start += format_value; + current_table_column++; } - printf("\n"); - output_lines++; } + else + u8len = u32_char_to_u8(u8ch, + *table_symbols[current_symbol_set][7]); + + u8ch[u8len] = 0; + printf("%s", u8ch); + current_rune_column++; + goto do_bottom_border; + +done_bottom_border: + printf("\n"); + output_lines++; +skip_bottom_border: free(format); if (pause)