diff --git a/cmdline/state.c b/cmdline/state.c index 6c3c8773..8da0ad6f 100644 --- a/cmdline/state.c +++ b/cmdline/state.c @@ -4002,7 +4002,7 @@ static void state_progress_graph(struct snapraid_state* state, struct snapraid_i printf("\n"); } - printr("", pad); + printc(' ', pad); printf(" |_"); printc('_', bar); printf("\n"); @@ -4049,7 +4049,7 @@ static void state_progress_graph(struct snapraid_state* state, struct snapraid_i printc('*', v * bar / tick_total); printf("\n"); - printr("", pad); + printc(' ', pad); printf(" |_"); printc('_', bar); printf("\n"); diff --git a/cmdline/support.c b/cmdline/support.c index 18074553..a418e073 100644 --- a/cmdline/support.c +++ b/cmdline/support.c @@ -305,8 +305,19 @@ void msg_flush(void) void printc(char c, size_t pad) { while (pad) { - putchar(c); - --pad; + /* group writes in long pieces */ + char buf[128]; + size_t len = pad; + + if (len >= sizeof(buf)) + len = sizeof(buf) - 1; + + memset(buf, c, len); + buf[len] = 0; + + fputs(buf, stdout); + + pad -= len; } } @@ -316,26 +327,22 @@ void printr(const char* str, size_t pad) len = strlen(str); - while (len < pad) { - putchar(' '); - ++len; - } + if (len < pad) + printc(' ', pad - len); - printf("%s", str); + fputs(str, stdout); } void printl(const char* str, size_t pad) { size_t len; - printf("%s", str); + fputs(str, stdout); len = strlen(str); - while (len < pad) { - putchar(' '); - ++len; - } + if (len < pad) + printc(' ', pad - len); } void printp(double v, size_t pad)