summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/graph.cc9
-rw-r--r--src/graph_test.cc9
2 files changed, 17 insertions, 1 deletions
diff --git a/src/graph.cc b/src/graph.cc
index 9f7fc76..ed7097b 100644
--- a/src/graph.cc
+++ b/src/graph.cc
@@ -189,7 +189,14 @@ string EdgeEnv::MakePathList(vector<Node*>::iterator begin,
for (vector<Node*>::iterator i = begin; i != end; ++i) {
if (!result.empty())
result.push_back(' ');
- result.append((*i)->path());
+ const string& path = (*i)->path();
+ if (path.find(" ") != string::npos) {
+ result.append("\"");
+ result.append(path);
+ result.append("\"");
+ } else {
+ result.append(path);
+ }
}
return result;
}
diff --git a/src/graph_test.cc b/src/graph_test.cc
index c1a0f93..07a1936 100644
--- a/src/graph_test.cc
+++ b/src/graph_test.cc
@@ -131,3 +131,12 @@ TEST_F(GraphTest, RootNodes) {
EXPECT_EQ("out", name.substr(0, 3));
}
}
+
+TEST_F(GraphTest, VarInOutQuoteSpaces) {
+ ASSERT_NO_FATAL_FAILURE(AssertParse(&state_,
+"build a$ b: cat nospace with$ space nospace2\n"));
+
+ Edge* edge = GetNode("a b")->in_edge();
+ EXPECT_EQ("cat nospace \"with space\" nospace2 > \"a b\"",
+ edge->EvaluateCommand());
+}