diff --git a/lldb/include/lldb/Host/File.h b/lldb/include/lldb/Host/File.h index 7402a2231735a..9e2d0abe0b1af 100644 --- a/lldb/include/lldb/Host/File.h +++ b/lldb/include/lldb/Host/File.h @@ -382,11 +382,15 @@ class NativeFile : public File { Unowned = false, }; - NativeFile(); + NativeFile() : m_descriptor(kInvalidDescriptor), m_stream(kInvalidStream) {} - NativeFile(FILE *fh, bool transfer_ownership); + NativeFile(FILE *fh, bool transfer_ownership) + : m_descriptor(kInvalidDescriptor), m_own_descriptor(false), m_stream(fh), + m_options(), m_own_stream(transfer_ownership) {} - NativeFile(int fd, OpenOptions options, bool transfer_ownership); + NativeFile(int fd, OpenOptions options, bool transfer_ownership) + : m_descriptor(fd), m_own_descriptor(transfer_ownership), + m_stream(kInvalidStream), m_options(options), m_own_stream(false) {} ~NativeFile() override { Close(); } @@ -440,19 +444,17 @@ class NativeFile : public File { return ValueGuard(m_stream_mutex, StreamIsValidUnlocked()); } - int m_descriptor = kInvalidDescriptor; + int m_descriptor; bool m_own_descriptor = false; mutable std::mutex m_descriptor_mutex; - FILE *m_stream = kInvalidStream; + FILE *m_stream; mutable std::mutex m_stream_mutex; OpenOptions m_options{}; bool m_own_stream = false; std::mutex offset_access_mutex; - bool is_windows_console = false; - private: NativeFile(const NativeFile &) = delete; const NativeFile &operator=(const NativeFile &) = delete; diff --git a/lldb/source/Host/common/File.cpp b/lldb/source/Host/common/File.cpp index 8cbbd7a5e14c7..23b6dc9fe850d 100644 --- a/lldb/source/Host/common/File.cpp +++ b/lldb/source/Host/common/File.cpp @@ -36,7 +36,6 @@ #include "llvm/Support/Errno.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Process.h" -#include "llvm/Support/raw_ostream.h" using namespace lldb; using namespace lldb_private; @@ -248,32 +247,6 @@ uint32_t File::GetPermissions(Status &error) const { return file_stats.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO); } -NativeFile::NativeFile() = default; - -NativeFile::NativeFile(FILE *fh, bool transfer_ownership) - : m_stream(fh), m_own_stream(transfer_ownership) { -#ifdef _WIN32 - // In order to properly display non ASCII characters in Windows, we need to - // use Windows APIs to print to the console. This is only required if the - // stream outputs to a console. - int fd = _fileno(fh); - is_windows_console = - ::GetFileType((HANDLE)::_get_osfhandle(fd)) == FILE_TYPE_CHAR; -#endif -} - -NativeFile::NativeFile(int fd, OpenOptions options, bool transfer_ownership) - : m_descriptor(fd), m_own_descriptor(transfer_ownership), - m_options(options) { -#ifdef _WIN32 - // In order to properly display non ASCII characters in Windows, we need to - // use Windows APIs to print to the console. This is only required if the - // file outputs to a console. - is_windows_console = - ::GetFileType((HANDLE)::_get_osfhandle(fd)) == FILE_TYPE_CHAR; -#endif -} - bool NativeFile::IsValid() const { std::scoped_lock lock(m_descriptor_mutex, m_stream_mutex); return DescriptorIsValidUnlocked() || StreamIsValidUnlocked(); @@ -645,12 +618,6 @@ Status NativeFile::Write(const void *buf, size_t &num_bytes) { ssize_t bytes_written = -1; if (ValueGuard descriptor_guard = DescriptorIsValid()) { -#ifdef _WIN32 - if (is_windows_console) { - llvm::raw_fd_ostream(m_descriptor, false).write((char *)buf, num_bytes); - return error; - } -#endif bytes_written = llvm::sys::RetryAfterSignal(-1, ::write, m_descriptor, buf, num_bytes); if (bytes_written == -1) { @@ -662,13 +629,6 @@ Status NativeFile::Write(const void *buf, size_t &num_bytes) { } if (ValueGuard stream_guard = StreamIsValid()) { -#ifdef _WIN32 - if (is_windows_console) { - llvm::raw_fd_ostream(_fileno(m_stream), false) - .write((char *)buf, num_bytes); - return error; - } -#endif bytes_written = ::fwrite(buf, 1, num_bytes, m_stream); if (bytes_written == 0) {