summaryrefslogtreecommitdiff
path: root/source/Host/common/File.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Host/common/File.cpp')
-rw-r--r--source/Host/common/File.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/source/Host/common/File.cpp b/source/Host/common/File.cpp
index a3420bff65f53..71a6149cd614c 100644
--- a/source/Host/common/File.cpp
+++ b/source/Host/common/File.cpp
@@ -22,6 +22,8 @@
#include <sys/ioctl.h>
#endif
+#include "llvm/Support/Process.h" // for llvm::sys::Process::FileDescriptorHasColors()
+
#include "lldb/Core/DataBufferHeap.h"
#include "lldb/Core/Error.h"
#include "lldb/Core/Log.h"
@@ -143,7 +145,13 @@ File::GetDescriptor() const
// Don't open the file descriptor if we don't need to, just get it from the
// stream if we have one.
if (StreamIsValid())
- return fileno (m_stream);
+ {
+#if defined(LLVM_ON_WIN32)
+ return _fileno(m_stream);
+#else
+ return fileno(m_stream);
+#endif
+ }
// Invalid descriptor and invalid stream, return invalid descriptor.
return kInvalidDescriptor;
@@ -1045,7 +1053,11 @@ File::CalculateInteractiveAndTerminal ()
if (::ioctl (fd, TIOCGWINSZ, &window_size) == 0)
{
if (window_size.ws_col > 0)
+ {
m_is_real_terminal = eLazyBoolYes;
+ if (llvm::sys::Process::FileDescriptorHasColors(fd))
+ m_supports_colors = eLazyBoolYes;
+ }
}
}
#endif
@@ -1068,3 +1080,11 @@ File::GetIsRealTerminal ()
return m_is_real_terminal == eLazyBoolYes;
}
+bool
+File::GetIsTerminalWithColors ()
+{
+ if (m_supports_colors == eLazyBoolCalculate)
+ CalculateInteractiveAndTerminal();
+ return m_supports_colors == eLazyBoolYes;
+}
+