summaryrefslogtreecommitdiffstats
path: root/src/build.cc
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2016-04-28 19:32:31 (GMT)
committerColin Cross <ccross@android.com>2016-04-28 19:35:01 (GMT)
commitf1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc (patch)
tree0ce7833c1726ff6eaa985fc277b5493716d2e708 /src/build.cc
parent644f6b175741469d1a42d218494365a1a401f5d5 (diff)
downloadNinja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.zip
Ninja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.tar.gz
Ninja-f1b5d2bf37ba6cd10bf7ab4b51877d68eae97cbc.tar.bz2
Fix NINJA_STATUS %e on dumb terminals
PR #999 made dumb terminals only output when edges finish. BuildStatus::overall_rate_ stopwatch is only initialized to the current time when PrintStatus is called with finished_edges_ == 0, but on a dumb terminal it will be called for the first time when finished_edge_ = 1, which results in very long elapsed times: NINJA_STATUS="[%r processes, %f/%t @ %o/s : %es ] " [0 processes, 2/2 @ 0.0/s : 1461869902.367s ] Reset the stopwatches in BuildEdgeFinished before finshed_edges_ is incremented instead.
Diffstat (limited to 'src/build.cc')
-rw-r--r--src/build.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/build.cc b/src/build.cc
index 8c0fbf8..2c39636 100644
--- a/src/build.cc
+++ b/src/build.cc
@@ -109,6 +109,12 @@ void BuildStatus::BuildEdgeFinished(Edge* edge,
int* start_time,
int* end_time) {
int64_t now = GetTimeMillis();
+
+ if (finished_edges_ == 0) {
+ overall_rate_.Restart();
+ current_rate_.Restart();
+ }
+
++finished_edges_;
RunningEdgeMap::iterator i = running_edges_.find(edge);
@@ -256,10 +262,6 @@ void BuildStatus::PrintStatus(Edge* edge) {
if (to_print.empty() || force_full_command)
to_print = edge->GetBinding("command");
- if (finished_edges_ == 0) {
- overall_rate_.Restart();
- current_rate_.Restart();
- }
to_print = FormatProgressStatus(progress_status_format_) + to_print;
printer_.Print(to_print,