diff options
author | Evan Martin <martine@danga.com> | 2011-09-09 21:09:25 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2011-09-09 21:09:25 (GMT) |
commit | 9a218d7909ad4747fb4de31842bd97f6f4fd3709 (patch) | |
tree | b16b8bc461287bcdd21402ec6e18f3a527079699 /src | |
parent | 71ba82572922114071360f4c70fb705d9bcf20e4 (diff) | |
download | Ninja-9a218d7909ad4747fb4de31842bd97f6f4fd3709.zip Ninja-9a218d7909ad4747fb4de31842bd97f6f4fd3709.tar.gz Ninja-9a218d7909ad4747fb4de31842bd97f6f4fd3709.tar.bz2 |
verify -k param is numeric
Fixes issue #85.
Diffstat (limited to 'src')
-rw-r--r-- | src/build.cc | 4 | ||||
-rw-r--r-- | src/ninja.cc | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/build.cc b/src/build.cc index e0118ef..9adce8f 100644 --- a/src/build.cc +++ b/src/build.cc @@ -439,8 +439,8 @@ bool Builder::Build(string* err) { --pending_commands; FinishEdge(edge, success, output); if (!success) { - if (--failures_allowed < 0) { - if (config_.swallow_failures > 0) + if (failures_allowed-- == 0) { + if (config_.swallow_failures != 0) *err = "subcommands failed"; else *err = "subcommand failed"; diff --git a/src/ninja.cc b/src/ninja.cc index fbee6d9..ae9c534 100644 --- a/src/ninja.cc +++ b/src/ninja.cc @@ -383,11 +383,17 @@ int main(int argc, char** argv) { case 'j': config.parallelism = atoi(optarg); break; - case 'k': + case 'k': { + char* end; + int value = strtol(optarg, &end, 10); + if (*end != 0) + Fatal("-k parameter not numeric; did you mean -k0?"); + // We want to go until N jobs fail, which means we should ignore // the first N-1 that fail and then stop. - config.swallow_failures = atoi(optarg) - 1; + config.swallow_failures = value - 1; break; + } case 'n': config.dry_run = true; break; |