diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/tool_cb_prg.c | 15 | 
1 files changed, 15 insertions, 0 deletions
diff --git a/src/tool_cb_prg.c b/src/tool_cb_prg.c index dd8941631..cf3251b29 100644 --- a/src/tool_cb_prg.c +++ b/src/tool_cb_prg.c @@ -202,6 +202,21 @@ void progressbarinit(struct ProgressData *bar,      struct winsize ts;      if(!ioctl(STDIN_FILENO, TIOCGWINSZ, &ts))        cols = ts.ws_col; +#elif defined(_WIN32) +    { +      HANDLE  stderr_hnd = GetStdHandle(STD_ERROR_HANDLE); +      CONSOLE_SCREEN_BUFFER_INFO console_info; + +      if((stderr_hnd != INVALID_HANDLE_VALUE) && +         GetConsoleScreenBufferInfo(stderr_hnd, &console_info)) { +        /* +         * Do not use +1 to get the true screen-width since writing a +         * character at the right edge will cause a line wrap. +         */ +        cols = (int) +          (console_info.srWindow.Right - console_info.srWindow.Left); +      } +    }  #endif /* TIOCGSIZE */      bar->width = cols;    }  | 
