From 3c3de6ce9e9d6d762151573745655a18e28e36df Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Fri, 19 Jan 2024 07:48:19 +0100 Subject: [PATCH] fix: terminal detection was wrong --- src/dwarfs/terminal.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/dwarfs/terminal.cpp b/src/dwarfs/terminal.cpp index e86517f4..5f68b60c 100644 --- a/src/dwarfs/terminal.cpp +++ b/src/dwarfs/terminal.cpp @@ -169,10 +169,10 @@ class terminal_windows : public terminal_ansi { bool is_fancy(std::ostream& os) const override { if (&os == &std::cout) { - return true; + return ::_isatty(::_fileno(stdout)); } if (&os == &std::cerr) { - return true; + return ::_isatty(::_fileno(stderr)); } return false; } @@ -189,14 +189,17 @@ class terminal_posix : public terminal_ansi { } bool is_fancy(std::ostream& os) const override { - if (&os == &std::cout && !::isatty(::fileno(stdout))) { - return false; - } - if (&os == &std::cerr && !::isatty(::fileno(stderr))) { - return false; - } auto term = ::getenv("TERM"); - return term && term[0] != '\0' && ::strcmp(term, "dumb") != 0; + if (!term || term[0] == '\0' || std::string_view(term) == "dumb") { + return false; + } + if (&os == &std::cout) { + return ::isatty(::fileno(stdout)); + } + if (&os == &std::cerr) { + return ::isatty(::fileno(stderr)); + } + return false; } };