diff options
author | Scott Graham <scottmg@chromium.org> | 2012-06-15 21:48:43 (GMT) |
---|---|---|
committer | Scott Graham <scottmg@chromium.org> | 2012-06-15 21:48:43 (GMT) |
commit | e0dd93a2586d20ca261e7a028dff01ac6100c4ad (patch) | |
tree | 70fd10fabac051b74290fd28ba093e9c795b2a0d /src/graph.cc | |
parent | 28d20bc0962afa1fec25a00622e30e88b7f681fe (diff) | |
download | Ninja-e0dd93a2586d20ca261e7a028dff01ac6100c4ad.zip Ninja-e0dd93a2586d20ca261e7a028dff01ac6100c4ad.tar.gz Ninja-e0dd93a2586d20ca261e7a028dff01ac6100c4ad.tar.bz2 |
add $in_newline
Diffstat (limited to 'src/graph.cc')
-rw-r--r-- | src/graph.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/graph.cc b/src/graph.cc index f381d8a..5418ecf 100644 --- a/src/graph.cc +++ b/src/graph.cc @@ -183,20 +183,23 @@ struct EdgeEnv : public Env { /// Given a span of Nodes, construct a list of paths suitable for a command /// line. XXX here is where shell-escaping of e.g spaces should happen. string MakePathList(vector<Node*>::iterator begin, - vector<Node*>::iterator end); + vector<Node*>::iterator end, + char sep); Edge* edge_; }; string EdgeEnv::LookupVariable(const string& var) { - if (var == "in") { + if (var == "in" || var == "in_newline") { int explicit_deps_count = edge_->inputs_.size() - edge_->implicit_deps_ - edge_->order_only_deps_; return MakePathList(edge_->inputs_.begin(), - edge_->inputs_.begin() + explicit_deps_count); + edge_->inputs_.begin() + explicit_deps_count, + var == "in" ? ' ' : '\n'); } else if (var == "out") { return MakePathList(edge_->outputs_.begin(), - edge_->outputs_.end()); + edge_->outputs_.end(), + ' '); } else if (edge_->env_) { return edge_->env_->LookupVariable(var); } else { @@ -206,11 +209,12 @@ string EdgeEnv::LookupVariable(const string& var) { } string EdgeEnv::MakePathList(vector<Node*>::iterator begin, - vector<Node*>::iterator end) { + vector<Node*>::iterator end, + char sep) { string result; for (vector<Node*>::iterator i = begin; i != end; ++i) { if (!result.empty()) - result.push_back(' '); + result.push_back(sep); const string& path = (*i)->path(); if (path.find(" ") != string::npos) { result.append("\""); |