diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-04-05 13:15:29 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-05 13:15:29 (GMT) |
commit | 4494d38c590ede0dd270fe247b2dae80d97fc855 (patch) | |
tree | 6cdb82615568743e53fb9486a87198789daf3356 | |
parent | a741b119e6d29061a4fbdedf35dc196e4cee67ec (diff) | |
parent | b9d3ba2f169e172f2d73330f6a1d1f0436baa859 (diff) | |
download | Ninja-4494d38c590ede0dd270fe247b2dae80d97fc855.zip Ninja-4494d38c590ede0dd270fe247b2dae80d97fc855.tar.gz Ninja-4494d38c590ede0dd270fe247b2dae80d97fc855.tar.bz2 |
Merge pull request #1366 from fjhenigman/clean
Canonicalize targets of clean command.
-rw-r--r-- | src/clean.cc | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/clean.cc b/src/clean.cc index 1d6ba9e..4f31a03 100644 --- a/src/clean.cc +++ b/src/clean.cc @@ -180,15 +180,22 @@ int Cleaner::CleanTargets(int target_count, char* targets[]) { Reset(); PrintHeader(); for (int i = 0; i < target_count; ++i) { - const char* target_name = targets[i]; - Node* target = state_->LookupNode(target_name); - if (target) { - if (IsVerbose()) - printf("Target %s\n", target_name); - DoCleanTarget(target); - } else { - Error("unknown target '%s'", target_name); + string target_name = targets[i]; + uint64_t slash_bits; + string err; + if (!CanonicalizePath(&target_name, &slash_bits, &err)) { + Error("failed to canonicalize '%s': %s", target_name.c_str(), err.c_str()); status_ = 1; + } else { + Node* target = state_->LookupNode(target_name); + if (target) { + if (IsVerbose()) + printf("Target %s\n", target_name.c_str()); + DoCleanTarget(target); + } else { + Error("unknown target '%s'", target_name.c_str()); + status_ = 1; + } } } PrintFooter(); |