From 6283f873fb4a448adb99d0b1a3d994a35f79a973 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sat, 2 Mar 2024 11:45:02 +0800 Subject: [PATCH 1/2] shared/pretty-print: print color sequence only when needed Follow-up for 71cb203a6ea6de409c6b9c042feda2ff655101e9 --- src/shared/pretty-print.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c index 543a9ebdcb..af44bb2ca2 100644 --- a/src/shared/pretty-print.c +++ b/src/shared/pretty-print.c @@ -465,7 +465,7 @@ int terminal_tint_color(double hue, char **ret) { void draw_progress_bar(const char *prefix, double percentage) { - fputs("\r", stderr); + fputc('\r', stderr); if (prefix) fputs(prefix, stderr); @@ -474,12 +474,12 @@ void draw_progress_bar(const char *prefix, double percentage) { size_t prefix_length = strlen_ptr(prefix); size_t length = cols > prefix_length + 6 ? cols - prefix_length - 6 : 0; - fputs(ansi_highlight_green(), stderr); - if (length > 5 && percentage >= 0.0 && percentage <= 100.0) { size_t p = (size_t) (length * percentage / 100.0); bool separator_done = false; + fputs(ansi_highlight_green(), stderr); + for (size_t i = 0; i < length; i++) { if (i <= p) { From c66da2d9ef5743d7ccee873b162a8968e4bdf4f1 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Sat, 2 Mar 2024 11:33:29 +0800 Subject: [PATCH 2/2] shared/pretty-print: use strrepa where appropriate --- src/shared/pretty-print.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/shared/pretty-print.c b/src/shared/pretty-print.c index af44bb2ca2..b81d1eb40c 100644 --- a/src/shared/pretty-print.c +++ b/src/shared/pretty-print.c @@ -522,13 +522,10 @@ void clear_progress_bar(const char *prefix) { fputc('\r', stderr); - if (terminal_is_dumb()) { - size_t l = strlen_ptr(prefix); - for (size_t i = 0; i < l; i ++) - fputc(' ', stderr); - - fputs(" ", stderr); - } else + if (terminal_is_dumb()) + fputs(strrepa(" ", strlen_ptr(prefix) + 4), /* 4: %3.0f%% */ + stderr); + else fputs(ANSI_ERASE_TO_END_OF_LINE, stderr); fputc('\r', stderr);