if(state->bar_width <= 0 || position != state->last_position) {
if(!ioctl (STDERR_FILENO, TIOCGWINSZ, (char *) &win)) {
/* Something weird is going on if the previous test is wrong */
- if(win.ws_col >= PROGRESS_BUFFER_SIZE) {
- state->bar_width = PROGRESS_BUFFER_SIZE - 8;
+ if(win.ws_col >= PROGRESS_BUFFER_SIZE - 3) {
+ state->bar_width = PROGRESS_BUFFER_SIZE - 10;
} else {
state->bar_width = win.ws_col - 7;
}
for(; k < state->bar_width; k++) {
*(s++) = '-';
}
- sprintf(s, " [%3d%%]\r",
+
+ /* We need four % because of the fprintf that follows */
+ sprintf(s, " [%3d%%%%]\r",
(100 * state->value) / (state->nb_values - 1));
fprintf(stderr, buffer);