From 37ef97bfa812a9a6f90b0513d31bd83bf7ce2a87 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 27 Sep 2019 15:29:47 +0200 Subject: JSON API: Force binary mode for stdout on Windows Otherwise, the line feed character will get expanded to \r\n. Change-Id: I90e83d80625c59978986541fb2d04f49e75afaf0 Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- src/app/qbs/session.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/app/qbs/session.cpp b/src/app/qbs/session.cpp index 0b93aff49..30e71dfd5 100644 --- a/src/app/qbs/session.cpp +++ b/src/app/qbs/session.cpp @@ -71,6 +71,14 @@ #include #include +#ifdef Q_OS_WIN32 +#include +#include +#include +#include +#include +#endif + namespace qbs { namespace Internal { @@ -175,6 +183,13 @@ void startSession() Session::Session() { +#ifdef Q_OS_WIN32 + // Make sure the line feed character appears as itself. + if (_setmode(_fileno(stdout), _O_BINARY) == -1) { + std::cerr << "Failed to set stdout to binary mode: " << std::strerror(errno) << std::endl; + qApp->exit(EXIT_FAILURE); + } +#endif sendPacket(SessionPacket::helloMessage()); connect(&m_logSink, &SessionLogSink::newMessage, this, &Session::sendPacket); connect(&m_packetReader, &SessionPacketReader::errorOccurred, -- cgit v1.2.3