diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-04-25T17·18+0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-04-25T17·18+0200 |
commit | cc804d0dc6c2c565ce9df63ae8557e2696eb2d59 (patch) | |
tree | a87248ef035e5b89418aac77db311c668e58bc6d /src/libstore | |
parent | ca9de88a51cc33f76c54f7f81ce7fbc318bcb848 (diff) |
Handle carriage return
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/build.cc | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc index 3830d7a671e8..97433821af58 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; |