diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/zen/zen.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/zen/zen.cpp b/src/zen/zen.cpp index 50ee43341..5ce0a89ec 100644 --- a/src/zen/zen.cpp +++ b/src/zen/zen.cpp @@ -334,16 +334,28 @@ ProgressBar::UpdateState(const State& NewState, bool DoLinebreak) uint64_t Completed = NewState.TotalCount - NewState.RemainingCount; uint64_t ETAMS = (PercentDone > 5) ? (ElapsedTimeMS * NewState.RemainingCount) / Completed : 0; + uint32_t ConsoleColumns = 1024; + +#if ZEN_PLATFORM_WINDOWS + static HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); +#endif + + if (!m_PlainProgress) + { #if ZEN_PLATFORM_WINDOWS - static HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); - CONSOLE_SCREEN_BUFFER_INFO csbi; - GetConsoleScreenBufferInfo(hStdOut, &csbi); - uint32_t ConsoleColumns = (uint32_t)(csbi.srWindow.Right - csbi.srWindow.Left + 1); + CONSOLE_SCREEN_BUFFER_INFO csbi; + if (GetConsoleScreenBufferInfo(hStdOut, &csbi) == TRUE) + { + ConsoleColumns = (uint32_t)(csbi.srWindow.Right - csbi.srWindow.Left + 1); + } #else - struct winsize w; - ioctl(STDOUT_FILENO, TIOCGWINSZ, &w); - uint32_t ConsoleColumns = (uint32_t)w.ws_col; + struct winsize w; + if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) == 0) + { + ConsoleColumns = (uint32_t)w.ws_col; + } #endif + } std::string_view TaskString = NewState.Task; |