summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2018-04-05 13:15:29 (GMT)
committerGitHub <noreply@github.com>2018-04-05 13:15:29 (GMT)
commit4494d38c590ede0dd270fe247b2dae80d97fc855 (patch)
tree6cdb82615568743e53fb9486a87198789daf3356
parenta741b119e6d29061a4fbdedf35dc196e4cee67ec (diff)
parentb9d3ba2f169e172f2d73330f6a1d1f0436baa859 (diff)
downloadNinja-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.cc23
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();