From cc804d0dc6c2c565ce9df63ae8557e2696eb2d59 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 25 Apr 2016 19:18:28 +0200 Subject: [PATCH] Handle carriage return --- src/libstore/build.cc | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 3830d7a67..97433821a 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -2935,18 +2935,13 @@ void DerivationGoal::handleChildOutput(int fd, const string & data) return; } - for (size_t pos = 0; true; ) { - auto newline = data.find('\n', pos); - - if (newline == std::string::npos) { - currentLogLine.append(data, pos, std::string::npos); - break; - } - - currentLogLine.append(data, pos, newline - pos); - flushLine(); - pos = newline + 1; - } + for (auto c : data) + if (c == '\r') + currentLogLine.clear(); // FIXME: not quite right + else if (c == '\n') + flushLine(); + else + currentLogLine += c; if (bzLogFile) { int err;