aboutsummaryrefslogtreecommitdiff
path: root/ninja.cc
diff options
context:
space:
mode:
authorDan Willemsen <dan@danw.org>2016-10-04 14:19:47 -0700
committerGitHub <noreply@github.com>2016-10-04 14:19:47 -0700
commit2547af08ce2727327c2a5d8a3b62078d8e3bb04c (patch)
treecae3bc54442db037d7a8ed86aff05b458d41bda0 /ninja.cc
parentd70bd64ad2909c129364364749f8c290344eff67 (diff)
parentf06d8019e99ae6aee1d2881f30315aee7b544cfb (diff)
Merge pull request #97 from danw/file_func
Implement the `file` function to read and write files
Diffstat (limited to 'ninja.cc')
-rw-r--r--ninja.cc36
1 files changed, 16 insertions, 20 deletions
diff --git a/ninja.cc b/ninja.cc
index e2bc9cd..05d0ad1 100644
--- a/ninja.cc
+++ b/ninja.cc
@@ -736,32 +736,28 @@ class NinjaGenerator {
const vector<CommandResult*>& crs = GetShellCommandResults();
DumpInt(fp, crs.size());
for (CommandResult* cr : crs) {
+ DumpInt(fp, static_cast<int>(cr->op));
DumpString(fp, cr->shell);
DumpString(fp, cr->shellflag);
DumpString(fp, cr->cmd);
DumpString(fp, cr->result);
- if (!cr->find.get()) {
- // Always re-run this command.
- DumpInt(fp, 0);
- continue;
- }
- DumpInt(fp, 1);
-
- vector<string> missing_dirs;
- for (StringPiece fd : cr->find->finddirs) {
- const string& d = ConcatDir(cr->find->chdir, fd);
- if (!Exists(d))
- missing_dirs.push_back(d);
- }
- DumpInt(fp, missing_dirs.size());
- for (const string& d : missing_dirs) {
- DumpString(fp, d);
- }
+ if (cr->op == CommandOp::FIND) {
+ vector<string> missing_dirs;
+ for (StringPiece fd : cr->find->finddirs) {
+ const string& d = ConcatDir(cr->find->chdir, fd);
+ if (!Exists(d))
+ missing_dirs.push_back(d);
+ }
+ DumpInt(fp, missing_dirs.size());
+ for (const string& d : missing_dirs) {
+ DumpString(fp, d);
+ }
- DumpInt(fp, cr->find->read_dirs->size());
- for (StringPiece s : *cr->find->read_dirs) {
- DumpString(fp, ConcatDir(cr->find->chdir, s));
+ DumpInt(fp, cr->find->read_dirs->size());
+ for (StringPiece s : *cr->find->read_dirs) {
+ DumpString(fp, ConcatDir(cr->find->chdir, s));
+ }
}
}