diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-17 06:14:20 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-06-18 11:25:44 +0900 |
commit | 133bf671988ededdf6bf7926323e8a6cfa83624a (patch) | |
tree | adcdc37a878c1a26aea62a5b444a2f49263e0307 /exec.cc | |
parent | 810fd03ef36afedeef832c5e78171b9e26a97e00 (diff) | |
download | kati-133bf671988ededdf6bf7926323e8a6cfa83624a.tar.gz |
[C++] Split lines in CreateRunners
Diffstat (limited to 'exec.cc')
-rw-r--r-- | exec.cc | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -64,10 +64,23 @@ class Executor { void CreateRunners(DepNode* n, vector<Runner*>* runners) { unique_ptr<Evaluator> ev(new Evaluator(vars_)); for (Value* v : n->cmds) { + shared_ptr<string> cmd = v->Eval(ev.get()); + while (true) { + size_t index = cmd->find('\n'); + if (index == string::npos) + break; + + Runner* runner = new Runner; + runner->output = n->output; + runner->cmd = make_shared<string>(cmd->substr(0, index)); + runners->push_back(runner); + cmd = make_shared<string>(cmd->substr(index + 1)); + } Runner* runner = new Runner; runner->output = n->output; - runner->cmd = v->Eval(ev.get()); + runner->cmd = cmd; runners->push_back(runner); + continue; } } |