From e50e6a492e0a9fbd04336e2e79241f958128e1e8 Mon Sep 17 00:00:00 2001 From: Beat Hangartner Date: Wed, 7 Oct 2026 01:51:00 +0200 Subject: [PATCH] Put stdout of a headless run into binary mode on Windows too stderr got it in the previous commit; stdout (the JSON of --info, the messages of the exports) still ended its lines in "\r\n" on Windows while stderr ended them in "\n". Both streams now give the same bytes on every system. Co-Authored-By: Claude Fable 5.1 --- sources/main.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sources/main.cpp b/sources/main.cpp index 827c38329..09aab1f21 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -153,10 +153,12 @@ static void headlessMessageHandler(QtMsgType type, static void installHeadlessMessageHandler() { #ifdef Q_OS_WIN - // stderr is in text mode on Windows and turns "\n" into "\r\n": a - // caller would read lines ending in '\r' where the other systems give - // none, and what the script logs with qet.log() already ends in "\n" - // alone. Binary mode gives one line ending for both. + // stdout and stderr are in text mode on Windows and turn "\n" into + // "\r\n": a caller would read lines ending in '\r' where the other + // systems give none. Binary mode gives both streams the same line + // ending on every system, for the JSON of --info, the messages of the + // exports and what a script logs. + _setmode(_fileno(stdout), _O_BINARY); _setmode(_fileno(stderr), _O_BINARY); #endif qInstallMessageHandler(headlessMessageHandler);