Optimizes console writes for Windows

This commit is contained in:
Andrea Mazzoleni 2016-01-30 09:17:30 +01:00
parent 6da3469fe7
commit 3040099e48
2 changed files with 21 additions and 14 deletions

View file

@ -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");

View file

@ -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)