From 2ec1b4262151a70cb694395dd38d99a937ba13e3 Mon Sep 17 00:00:00 2001 From: Evan Martin Date: Sat, 14 May 2011 15:43:23 -0700 Subject: show started, not finished, edges in progress In verbose mode (where we don't overprint) it's confusing to show [0/XX] for the first N commands we start. In smart terminal mode, I can't really tell the difference. --- src/build.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/build.cc b/src/build.cc index 5b2bddb..7a474a6 100644 --- a/src/build.cc +++ b/src/build.cc @@ -62,7 +62,7 @@ struct BuildStatus { /// Time we last printed an update. int64_t last_update_millis_; - int finished_edges_, total_edges_; + int started_edges_, finished_edges_, total_edges_; /// Map of running edge to time the edge started running. typedef map RunningEdgeMap; @@ -76,7 +76,7 @@ BuildStatus::BuildStatus(const BuildConfig& config) : config_(config), start_time_millis_(GetTimeMillis()), last_update_millis_(start_time_millis_), - finished_edges_(0), total_edges_(0) { + started_edges_(0), finished_edges_(0), total_edges_(0) { #ifndef WIN32 const char* term = getenv("TERM"); smart_terminal_ = isatty(1) && term && string(term) != "dumb"; @@ -96,6 +96,7 @@ void BuildStatus::PlanHasTotalEdges(int total) { void BuildStatus::BuildEdgeStarted(Edge* edge) { int start_time = (int)(GetTimeMillis() - start_time_millis_); running_edges_.insert(make_pair(edge, start_time)); + ++started_edges_; PrintStatus(edge); } @@ -157,7 +158,7 @@ void BuildStatus::PrintStatus(Edge* edge) { if (smart_terminal_) printf("\r"); // Print over previous line, if any. - int progress_chars = printf("[%d/%d] ", finished_edges_, total_edges_); + int progress_chars = printf("[%d/%d] ", started_edges_, total_edges_); #ifndef WIN32 if (smart_terminal_ && !force_full_command) { -- cgit v0.12