From d5eab2fc8293e0d14c7fd297bf7512257442295b Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 21 Apr 2009 11:52:16 +0000 Subject: * Use foreach in a lot of places. --- src/libstore/build.cc | 62 ++++++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 40 deletions(-) (limited to 'src/libstore/build.cc') diff --git a/src/libstore/build.cc b/src/libstore/build.cc index b475341bd446..d3b46a2ca0d6 100644 --- a/src/libstore/build.cc +++ b/src/libstore/build.cc @@ -290,13 +290,11 @@ void Goal::waiteeDone(GoalPtr waitee, ExitCode result) /* If we failed and keepGoing is not set, we remove all remaining waitees. */ - for (Goals::iterator i = waitees.begin(); i != waitees.end(); ++i) { + foreach (Goals::iterator, i, waitees) { GoalPtr goal = *i; WeakGoals waiters2; - for (WeakGoals::iterator j = goal->waiters.begin(); - j != goal->waiters.end(); ++j) - if (j->lock() != shared_from_this()) - waiters2.insert(*j); + foreach (WeakGoals::iterator, j, goal->waiters) + if (j->lock() != shared_from_this()) waiters2.insert(*j); goal->waiters = waiters2; } waitees.clear(); @@ -312,7 +310,7 @@ void Goal::amDone(ExitCode result) assert(exitCode == ecBusy); assert(result == ecSuccess || result == ecFailed); exitCode = result; - for (WeakGoals::iterator i = waiters.begin(); i != waiters.end(); ++i) { + foreach (WeakGoals::iterator, i, waiters) { GoalPtr goal = i->lock(); if (goal) goal->waiteeDone(shared_from_this(), result); } @@ -365,8 +363,7 @@ const char * * strings2CharPtrs(const Strings & ss) { const char * * arr = new const char * [ss.size() + 1]; const char * * p = arr; - for (Strings::const_iterator i = ss.begin(); i != ss.end(); ++i) - *p++ = i->c_str(); + foreach (Strings::const_iterator, i, ss) *p++ = i->c_str(); *p = 0; return arr; } @@ -462,7 +459,7 @@ void UserLock::acquire() /* Find a user account that isn't currently in use for another build. */ - for (Strings::iterator i = users.begin(); i != users.end(); ++i) { + foreach (Strings::iterator, i, users) { debug(format("trying user `%1%'") % *i); struct passwd * pw = getpwnam(i->c_str()); @@ -877,8 +874,7 @@ void DerivationGoal::outputsSubstituted() foreach (DerivationInputs::iterator, i, drv.inputDrvs) addWaitee(worker.makeDerivationGoal(i->first)); - for (PathSet::iterator i = drv.inputSrcs.begin(); - i != drv.inputSrcs.end(); ++i) + foreach (PathSet::iterator, i, drv.inputSrcs) addWaitee(worker.makeSubstitutionGoal(*i)); state = &DerivationGoal::inputsRealised; @@ -949,8 +945,7 @@ void DerivationGoal::inputsRealised() PathSet outputPaths(const DerivationOutputs & outputs) { PathSet paths; - for (DerivationOutputs::const_iterator i = outputs.begin(); - i != outputs.end(); ++i) + foreach (DerivationOutputs::const_iterator, i, outputs) paths.insert(i->second.path); return paths; } @@ -1313,17 +1308,14 @@ DerivationGoal::HookReply DerivationGoal::tryBuildHook() computeFSClosure(drvPath, allInputs); string s; - for (PathSet::iterator i = allInputs.begin(); - i != allInputs.end(); ++i) - s += *i + "\n"; + foreach (PathSet::iterator, i, allInputs) s += *i + "\n"; writeStringToFile(inputListFN, s); /* The `outputs' file lists all outputs that have to be copied from the remote system. */ s = ""; - for (DerivationOutputs::iterator i = drv.outputs.begin(); - i != drv.outputs.end(); ++i) + foreach (DerivationOutputs::iterator, i, drv.outputs) s += i->second.path + "\n"; writeStringToFile(outputListFN, s); @@ -1411,8 +1403,7 @@ void DerivationGoal::startBuilder() env["NIX_STORE"] = nixStore; /* Add all bindings specified in the derivation. */ - for (StringPairs::iterator i = drv.env.begin(); - i != drv.env.end(); ++i) + foreach (StringPairs::iterator, i, drv.env) env[i->first] = i->second; /* Create a temporary directory where the build will take @@ -1449,8 +1440,7 @@ void DerivationGoal::startBuilder() already know the cryptographic hash of the output). */ if (fixedOutput) { Strings varNames = tokenizeString(drv.env["impureEnvVars"]); - for (Strings::iterator i = varNames.begin(); i != varNames.end(); ++i) - env[*i] = getEnv(*i); + foreach (Strings::iterator, i, varNames) env[*i] = getEnv(*i); } /* The `exportReferencesGraph' feature allows the references graph @@ -1690,8 +1680,7 @@ void DerivationGoal::startBuilder() /* Fill in the environment. */ Strings envStrs; - for (Environment::const_iterator i = env.begin(); - i != env.end(); ++i) + foreach (Environment::const_iterator, i, env) envStrs.push_back(i->first + "=" + i->second); const char * * envArr = strings2CharPtrs(envStrs); @@ -1737,8 +1726,7 @@ void DerivationGoal::startBuilder() /* Fill in the arguments. */ string builderBasename = baseNameOf(drv.builder); args.push_back(builderBasename.c_str()); - for (Strings::iterator i = drv.args.begin(); - i != drv.args.end(); ++i) + foreach (Strings::iterator, i, drv.args) args.push_back(i->c_str()); args.push_back(0); @@ -1777,7 +1765,7 @@ PathSet parseReferenceSpecifiers(const Derivation & drv, string attr) { PathSet result; Paths paths = tokenizeString(attr); - for (Strings::iterator i = paths.begin(); i != paths.end(); ++i) { + foreach (Strings::iterator, i, paths) { if (isStorePath(*i)) result.insert(*i); else if (drv.outputs.find(*i) != drv.outputs.end()) @@ -1886,7 +1874,7 @@ void DerivationGoal::computeClosure() allowedReferences should really be per-output. */ if (drv.env.find("allowedReferences") != drv.env.end()) { PathSet allowed = parseReferenceSpecifiers(drv, drv.env["allowedReferences"]); - for (PathSet::iterator i = references.begin(); i != references.end(); ++i) + foreach (PathSet::iterator, i, references) if (allowed.find(*i) == allowed.end()) throw BuildError(format("output is not allowed to refer to path `%1%'") % *i); } @@ -1990,8 +1978,7 @@ void DerivationGoal::handleEOF(int fd) PathSet DerivationGoal::checkPathValidity(bool returnValid) { PathSet result; - for (DerivationOutputs::iterator i = drv.outputs.begin(); - i != drv.outputs.end(); ++i) + foreach (DerivationOutputs::iterator, i, drv.outputs) if (worker.store.isValidPath(i->second.path)) { if (returnValid) result.insert(i->second.path); } else { @@ -2495,9 +2482,7 @@ void Worker::childTerminated(pid_t pid, bool wakeSleepers) if (wakeSleepers) { /* Wake up goals waiting for a build slot. */ - for (WeakGoals::iterator i = wantingToBuild.begin(); - i != wantingToBuild.end(); ++i) - { + foreach (WeakGoals::iterator, i, wantingToBuild) { GoalPtr goal = i->lock(); if (goal) wakeUp(goal); } @@ -2533,9 +2518,7 @@ void Worker::waitForAWhile(GoalPtr goal) void Worker::run(const Goals & _topGoals) { - for (Goals::iterator i = _topGoals.begin(); - i != _topGoals.end(); ++i) - topGoals.insert(*i); + foreach (Goals::iterator, i, _topGoals) topGoals.insert(*i); startNest(nest, lvlDebug, format("entered goal loop")); @@ -2547,7 +2530,7 @@ void Worker::run(const Goals & _topGoals) while (!awake.empty() && !topGoals.empty()) { WeakGoals awake2(awake); awake.clear(); - for (WeakGoals::iterator i = awake2.begin(); i != awake2.end(); ++i) { + foreach (WeakGoals::iterator, i, awake2) { checkInterrupt(); GoalPtr goal = i->lock(); if (goal) goal->work(); @@ -2709,14 +2692,13 @@ void LocalStore::buildDerivations(const PathSet & drvPaths) Worker worker(*this); Goals goals; - for (PathSet::const_iterator i = drvPaths.begin(); - i != drvPaths.end(); ++i) + foreach (PathSet::const_iterator, i, drvPaths) goals.insert(worker.makeDerivationGoal(*i)); worker.run(goals); PathSet failed; - for (Goals::iterator i = goals.begin(); i != goals.end(); ++i) + foreach (Goals::iterator, i, goals) if ((*i)->getExitCode() == Goal::ecFailed) { DerivationGoal * i2 = dynamic_cast(i->get()); assert(i2); -- cgit 1.4.1