refactor(3p/nix): Apply clang-tidy's modernize-* fixes
This applies the modernization fixes listed here: https://clang.llvm.org/extra/clang-tidy/checks/list.html The 'modernize-use-trailing-return-type' fix was excluded due to my personal preference (more specifically, I think the 'auto' keyword is misleading in that position).
This commit is contained in:
parent
fed31b2c9b
commit
d331d3a0b5
59 changed files with 349 additions and 321 deletions
|
@ -184,7 +184,7 @@ static int _main(int argc, char* argv[]) {
|
|||
#if __APPLE__
|
||||
futimes(bestSlotLock.get(), NULL);
|
||||
#else
|
||||
futimens(bestSlotLock.get(), NULL);
|
||||
futimens(bestSlotLock.get(), nullptr);
|
||||
#endif
|
||||
|
||||
lock = -1;
|
||||
|
|
2
third_party/nix/src/libexpr/attr-path.cc
vendored
2
third_party/nix/src/libexpr/attr-path.cc
vendored
|
@ -15,7 +15,7 @@ static Strings parseAttrPath(const string& s) {
|
|||
cur.clear();
|
||||
} else if (*i == '"') {
|
||||
++i;
|
||||
while (1) {
|
||||
while (true) {
|
||||
if (i == s.end()) {
|
||||
throw Error(format("missing closing quote in selection path '%1%'") %
|
||||
s);
|
||||
|
|
25
third_party/nix/src/libexpr/eval.cc
vendored
25
third_party/nix/src/libexpr/eval.cc
vendored
|
@ -328,7 +328,7 @@ EvalState::EvalState(const Strings& _searchPath, ref<Store> store)
|
|||
repair(NoRepair),
|
||||
store(store),
|
||||
baseEnv(allocEnv(128)),
|
||||
staticBaseEnv(false, 0) {
|
||||
staticBaseEnv(false, nullptr) {
|
||||
countCalls = getEnv("NIX_COUNT_CALLS", "0") != "0";
|
||||
|
||||
assert(gcInitialised);
|
||||
|
@ -378,7 +378,7 @@ EvalState::EvalState(const Strings& _searchPath, ref<Store> store)
|
|||
createBaseEnv();
|
||||
}
|
||||
|
||||
EvalState::~EvalState() {}
|
||||
EvalState::~EvalState() = default;
|
||||
|
||||
Path EvalState::checkSourcePath(const Path& path_) {
|
||||
if (!allowedPaths) {
|
||||
|
@ -575,7 +575,7 @@ Value& mkString(Value& v, const string& s, const PathSet& context) {
|
|||
for (auto& i : context) {
|
||||
v.string.context[n++] = dupString(i.c_str());
|
||||
}
|
||||
v.string.context[n] = 0;
|
||||
v.string.context[n] = nullptr;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
@ -591,10 +591,10 @@ inline Value* EvalState::lookupVar(Env* env, const ExprVar& var, bool noEval) {
|
|||
return env->values[var.displ];
|
||||
}
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
if (env->type == Env::HasWithExpr) {
|
||||
if (noEval) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
Value* v = allocValue();
|
||||
evalAttrs(*env->up, (Expr*)env->values[0], *v);
|
||||
|
@ -656,7 +656,8 @@ void EvalState::mkList(Value& v, size_t size) {
|
|||
} else {
|
||||
v.type = tListN;
|
||||
v.bigList.size = size;
|
||||
v.bigList.elems = size ? (Value**)allocBytes(size * sizeof(Value*)) : 0;
|
||||
v.bigList.elems =
|
||||
size ? (Value**)allocBytes(size * sizeof(Value*)) : nullptr;
|
||||
}
|
||||
nrListElems += size;
|
||||
}
|
||||
|
@ -822,7 +823,7 @@ void ExprAttrs::eval(EvalState& state, Env& env, Value& v) {
|
|||
env2.up = &env;
|
||||
dynamicEnv = &env2;
|
||||
|
||||
AttrDefs::iterator overrides = attrs.find(state.sOverrides);
|
||||
auto overrides = attrs.find(state.sOverrides);
|
||||
bool hasOverrides = overrides != attrs.end();
|
||||
|
||||
/* The recursive attributes are evaluated in the new
|
||||
|
@ -858,7 +859,7 @@ void ExprAttrs::eval(EvalState& state, Env& env, Value& v) {
|
|||
newBnds->push_back(i);
|
||||
}
|
||||
for (auto& i : *vOverrides->attrs) {
|
||||
AttrDefs::iterator j = attrs.find(i.name);
|
||||
auto j = attrs.find(i.name);
|
||||
if (j != attrs.end()) {
|
||||
(*newBnds)[j->second.displ] = i;
|
||||
env2.values[j->second.displ] = i.value;
|
||||
|
@ -955,7 +956,7 @@ unsigned long nrLookups = 0;
|
|||
|
||||
void ExprSelect::eval(EvalState& state, Env& env, Value& v) {
|
||||
Value vTmp;
|
||||
Pos* pos2 = 0;
|
||||
Pos* pos2 = nullptr;
|
||||
Value* vAttrs = &vTmp;
|
||||
|
||||
e->eval(state, env, vTmp);
|
||||
|
@ -985,7 +986,7 @@ void ExprSelect::eval(EvalState& state, Env& env, Value& v) {
|
|||
}
|
||||
}
|
||||
|
||||
state.forceValue(*vAttrs, (pos2 != NULL ? *pos2 : this->pos));
|
||||
state.forceValue(*vAttrs, (pos2 != nullptr ? *pos2 : this->pos));
|
||||
|
||||
} catch (Error& e) {
|
||||
if (pos2 && pos2->file != state.sDerivationNix) {
|
||||
|
@ -1334,7 +1335,7 @@ void EvalState::concatLists(Value& v, size_t nrLists, Value** lists,
|
|||
const Pos& pos) {
|
||||
nrListConcats++;
|
||||
|
||||
Value* nonEmpty = 0;
|
||||
Value* nonEmpty = nullptr;
|
||||
size_t len = 0;
|
||||
for (size_t n = 0; n < nrLists; ++n) {
|
||||
forceList(*lists[n], pos);
|
||||
|
@ -1796,7 +1797,7 @@ void EvalState::printStats() {
|
|||
|
||||
#if HAVE_BOEHMGC
|
||||
GC_word heapSize, totalBytes;
|
||||
GC_get_heap_usage_safe(&heapSize, 0, 0, 0, &totalBytes);
|
||||
GC_get_heap_usage_safe(&heapSize, nullptr, nullptr, nullptr, &totalBytes);
|
||||
#endif
|
||||
if (showStats) {
|
||||
auto outPath = getEnv("NIX_SHOW_STATS_PATH", "-");
|
||||
|
|
17
third_party/nix/src/libexpr/get-drvs.cc
vendored
17
third_party/nix/src/libexpr/get-drvs.cc
vendored
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <cstring>
|
||||
#include <regex>
|
||||
#include <utility>
|
||||
|
||||
#include <glog/logging.h>
|
||||
|
||||
|
@ -11,12 +12,12 @@
|
|||
|
||||
namespace nix {
|
||||
|
||||
DrvInfo::DrvInfo(EvalState& state, const string& attrPath, Bindings* attrs)
|
||||
: state(&state), attrs(attrs), attrPath(attrPath) {}
|
||||
DrvInfo::DrvInfo(EvalState& state, string attrPath, Bindings* attrs)
|
||||
: state(&state), attrs(attrs), attrPath(std::move(attrPath)) {}
|
||||
|
||||
DrvInfo::DrvInfo(EvalState& state, ref<Store> store,
|
||||
const std::string& drvPathWithOutputs)
|
||||
: state(&state), attrs(nullptr), attrPath("") {
|
||||
: state(&state), attrPath("") {
|
||||
auto spec = parseDrvPathWithOutputs(drvPathWithOutputs);
|
||||
|
||||
drvPath = spec.first;
|
||||
|
@ -158,11 +159,11 @@ Bindings* DrvInfo::getMeta() {
|
|||
return meta;
|
||||
}
|
||||
if (!attrs) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
Bindings::iterator a = attrs->find(state->sMeta);
|
||||
if (a == attrs->end()) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
state->forceAttrs(*a->value, *a->pos);
|
||||
meta = a->value->attrs;
|
||||
|
@ -208,11 +209,11 @@ bool DrvInfo::checkMeta(Value& v) {
|
|||
|
||||
Value* DrvInfo::queryMeta(const string& name) {
|
||||
if (!getMeta()) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
Bindings::iterator a = meta->find(state->symbols.create(name));
|
||||
if (a == meta->end() || !checkMeta(*a->value)) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
return a->value;
|
||||
}
|
||||
|
@ -303,7 +304,7 @@ void DrvInfo::setMeta(const string& name, Value* v) {
|
|||
}
|
||||
|
||||
/* Cache for already considered attrsets. */
|
||||
typedef set<Bindings*> Done;
|
||||
using Done = set<Bindings*>;
|
||||
|
||||
/* Evaluate value `v'. If it evaluates to a set of type `derivation',
|
||||
then put information about it in `drvs' (unless it's already in `done').
|
||||
|
|
2
third_party/nix/src/libexpr/get-drvs.hh
vendored
2
third_party/nix/src/libexpr/get-drvs.hh
vendored
|
@ -33,7 +33,7 @@ struct DrvInfo {
|
|||
string attrPath; /* path towards the derivation */
|
||||
|
||||
DrvInfo(EvalState& state) : state(&state){};
|
||||
DrvInfo(EvalState& state, const string& attrPath, Bindings* attrs);
|
||||
DrvInfo(EvalState& state, string attrPath, Bindings* attrs);
|
||||
DrvInfo(EvalState& state, ref<Store> store,
|
||||
const std::string& drvPathWithOutputs);
|
||||
|
||||
|
|
4
third_party/nix/src/libexpr/json-to-value.cc
vendored
4
third_party/nix/src/libexpr/json-to-value.cc
vendored
|
@ -66,7 +66,7 @@ static void parseJSON(EvalState& state, const char*& s, Value& v) {
|
|||
ValueVector values;
|
||||
values.reserve(128);
|
||||
skipWhitespace(s);
|
||||
while (1) {
|
||||
while (true) {
|
||||
if (values.empty() && *s == ']') {
|
||||
break;
|
||||
}
|
||||
|
@ -92,7 +92,7 @@ static void parseJSON(EvalState& state, const char*& s, Value& v) {
|
|||
else if (*s == '{') {
|
||||
s++;
|
||||
ValueMap attrs;
|
||||
while (1) {
|
||||
while (true) {
|
||||
skipWhitespace(s);
|
||||
if (attrs.empty() && *s == '}') {
|
||||
break;
|
||||
|
|
5
third_party/nix/src/libexpr/names.cc
vendored
5
third_party/nix/src/libexpr/names.cc
vendored
|
@ -1,5 +1,7 @@
|
|||
#include "names.hh"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "util.hh"
|
||||
|
||||
namespace nix {
|
||||
|
@ -26,8 +28,7 @@ DrvName::DrvName(const string& s) : hits(0) {
|
|||
bool DrvName::matches(DrvName& n) {
|
||||
if (name != "*") {
|
||||
if (!regex) {
|
||||
regex = std::unique_ptr<std::regex>(
|
||||
new std::regex(name, std::regex::extended));
|
||||
regex = std::make_unique<std::regex>(name, std::regex::extended);
|
||||
}
|
||||
if (!std::regex_match(n.name, *regex)) {
|
||||
return false;
|
||||
|
|
2
third_party/nix/src/libexpr/nixexpr.cc
vendored
2
third_party/nix/src/libexpr/nixexpr.cc
vendored
|
@ -239,7 +239,7 @@ void ExprVar::bindVars(const StaticEnv& env) {
|
|||
withLevel = level;
|
||||
}
|
||||
} else {
|
||||
StaticEnv::Vars::const_iterator i = curEnv->vars.find(name);
|
||||
auto i = curEnv->vars.find(name);
|
||||
if (i != curEnv->vars.end()) {
|
||||
fromWith = false;
|
||||
this->level = level;
|
||||
|
|
12
third_party/nix/src/libexpr/primops.cc
vendored
12
third_party/nix/src/libexpr/primops.cc
vendored
|
@ -62,7 +62,7 @@ void EvalState::realiseContext(const PathSet& context) {
|
|||
paths. */
|
||||
if (allowedPaths) {
|
||||
auto drv = store->derivationFromPath(decoded.first);
|
||||
DerivationOutputs::iterator i = drv.outputs.find(decoded.second);
|
||||
auto i = drv.outputs.find(decoded.second);
|
||||
if (i == drv.outputs.end()) {
|
||||
throw Error("derivation '%s' does not have an output named '%s'",
|
||||
decoded.first, decoded.second);
|
||||
|
@ -160,7 +160,7 @@ static void prim_scopedImport(EvalState& state, const Pos& pos, Value** args,
|
|||
|
||||
/* Want reasonable symbol names, so extern C */
|
||||
/* !!! Should we pass the Pos or the file name too? */
|
||||
extern "C" typedef void (*ValueInitializer)(EvalState& state, Value& v);
|
||||
extern "C" using ValueInitializer = void(*)(EvalState&, Value&);
|
||||
|
||||
/* Load a ValueInitializer from a DSO and return whatever it initializes */
|
||||
void prim_importNative(EvalState& state, const Pos& pos, Value** args,
|
||||
|
@ -186,7 +186,7 @@ void prim_importNative(EvalState& state, const Pos& pos, Value** args,
|
|||
}
|
||||
|
||||
dlerror();
|
||||
ValueInitializer func = (ValueInitializer)dlsym(handle, sym.c_str());
|
||||
auto func = (ValueInitializer)dlsym(handle, sym.c_str());
|
||||
if (!func) {
|
||||
char* message = dlerror();
|
||||
if (message) {
|
||||
|
@ -2090,7 +2090,7 @@ static void prim_replaceStrings(EvalState& state, const Pos& pos, Value** args,
|
|||
for (unsigned int n = 0; n < args[1]->listSize(); ++n) {
|
||||
PathSet ctx;
|
||||
auto s = state.forceString(*args[1]->listElems()[n], ctx, pos);
|
||||
to.push_back(std::make_pair(std::move(s), std::move(ctx)));
|
||||
to.emplace_back(std::move(s), std::move(ctx));
|
||||
}
|
||||
|
||||
PathSet context;
|
||||
|
@ -2253,7 +2253,7 @@ RegisterPrimOp::RegisterPrimOp(std::string name, size_t arity, PrimOpFun fun) {
|
|||
}
|
||||
|
||||
void EvalState::createBaseEnv() {
|
||||
baseEnv.up = 0;
|
||||
baseEnv.up = nullptr;
|
||||
|
||||
/* Add global constants such as `true' to the base environment. */
|
||||
Value v;
|
||||
|
@ -2281,7 +2281,7 @@ void EvalState::createBaseEnv() {
|
|||
};
|
||||
|
||||
if (!evalSettings.pureEval) {
|
||||
mkInt(v, time(0));
|
||||
mkInt(v, time(nullptr));
|
||||
addConstant("__currentTime", v);
|
||||
}
|
||||
|
||||
|
|
13
third_party/nix/src/libmain/shared.cc
vendored
13
third_party/nix/src/libmain/shared.cc
vendored
|
@ -2,14 +2,15 @@
|
|||
|
||||
#include <algorithm>
|
||||
#include <cctype>
|
||||
#include <csignal>
|
||||
#include <cstdlib>
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <mutex>
|
||||
#include <utility>
|
||||
|
||||
#include <glog/logging.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <signal.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
|
@ -128,13 +129,13 @@ void initNix() {
|
|||
sigemptyset(&act.sa_mask);
|
||||
act.sa_handler = SIG_DFL;
|
||||
act.sa_flags = 0;
|
||||
if (sigaction(SIGCHLD, &act, 0)) {
|
||||
if (sigaction(SIGCHLD, &act, nullptr)) {
|
||||
throw SysError("resetting SIGCHLD");
|
||||
}
|
||||
|
||||
/* Install a dummy SIGUSR1 handler for use with pthread_kill(). */
|
||||
act.sa_handler = sigHandler;
|
||||
if (sigaction(SIGUSR1, &act, 0)) {
|
||||
if (sigaction(SIGUSR1, &act, nullptr)) {
|
||||
throw SysError("handling SIGUSR1");
|
||||
}
|
||||
|
||||
|
@ -159,7 +160,7 @@ void initNix() {
|
|||
|
||||
/* Initialise the PRNG. */
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, 0);
|
||||
gettimeofday(&tv, nullptr);
|
||||
srandom(tv.tv_usec);
|
||||
|
||||
/* On macOS, don't use the per-session TMPDIR (as set e.g. by
|
||||
|
@ -175,7 +176,7 @@ LegacyArgs::LegacyArgs(
|
|||
const std::string& programName,
|
||||
std::function<bool(Strings::iterator& arg, const Strings::iterator& end)>
|
||||
parseArg)
|
||||
: MixCommonArgs(programName), parseArg(parseArg) {
|
||||
: MixCommonArgs(programName), parseArg(std::move(parseArg)) {
|
||||
mkFlag()
|
||||
.longName("no-build-output")
|
||||
.shortName('Q')
|
||||
|
@ -395,6 +396,6 @@ PrintFreed::~PrintFreed() {
|
|||
}
|
||||
}
|
||||
|
||||
Exit::~Exit() {}
|
||||
Exit::~Exit() = default;
|
||||
|
||||
} // namespace nix
|
||||
|
|
10
third_party/nix/src/libmain/stack.cc
vendored
10
third_party/nix/src/libmain/stack.cc
vendored
|
@ -1,8 +1,8 @@
|
|||
#include <csignal>
|
||||
#include <cstddef>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "types.hh"
|
||||
|
@ -14,7 +14,7 @@ static void sigsegvHandler(int signo, siginfo_t* info, void* ctx) {
|
|||
the stack pointer. Unfortunately, getting the stack pointer is
|
||||
not portable. */
|
||||
bool haveSP = true;
|
||||
char* sp = 0;
|
||||
char* sp = nullptr;
|
||||
#if defined(__x86_64__) && defined(REG_RSP)
|
||||
sp = (char*)((ucontext_t*)ctx)->uc_mcontext.gregs[REG_RSP];
|
||||
#elif defined(REG_ESP)
|
||||
|
@ -40,7 +40,7 @@ static void sigsegvHandler(int signo, siginfo_t* info, void* ctx) {
|
|||
sigfillset(&act.sa_mask);
|
||||
act.sa_handler = SIG_DFL;
|
||||
act.sa_flags = 0;
|
||||
if (sigaction(SIGSEGV, &act, 0)) {
|
||||
if (sigaction(SIGSEGV, &act, nullptr)) {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,7 @@ void detectStackOverflow() {
|
|||
throw Error("cannot allocate alternative stack");
|
||||
}
|
||||
stack.ss_flags = 0;
|
||||
if (sigaltstack(&stack, 0) == -1) {
|
||||
if (sigaltstack(&stack, nullptr) == -1) {
|
||||
throw SysError("cannot set alternative stack");
|
||||
}
|
||||
|
||||
|
@ -66,7 +66,7 @@ void detectStackOverflow() {
|
|||
sigfillset(&act.sa_mask);
|
||||
act.sa_sigaction = sigsegvHandler;
|
||||
act.sa_flags = SA_SIGINFO | SA_ONSTACK;
|
||||
if (sigaction(SIGSEGV, &act, 0)) {
|
||||
if (sigaction(SIGSEGV, &act, nullptr)) {
|
||||
throw SysError("resetting SIGSEGV");
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <chrono>
|
||||
#include <future>
|
||||
#include <memory>
|
||||
|
||||
#include "archive.hh"
|
||||
#include "compression.hh"
|
||||
|
@ -20,8 +21,7 @@ namespace nix {
|
|||
|
||||
BinaryCacheStore::BinaryCacheStore(const Params& params) : Store(params) {
|
||||
if (secretKeyFile != "") {
|
||||
secretKey =
|
||||
std::unique_ptr<SecretKey>(new SecretKey(readFile(secretKeyFile)));
|
||||
secretKey = std::make_unique<SecretKey>(readFile(secretKeyFile));
|
||||
}
|
||||
|
||||
StringSink sink;
|
||||
|
|
101
third_party/nix/src/libstore/build.cc
vendored
101
third_party/nix/src/libstore/build.cc
vendored
|
@ -1,18 +1,19 @@
|
|||
#include <algorithm>
|
||||
#include <cerrno>
|
||||
#include <chrono>
|
||||
#include <climits>
|
||||
#include <cstring>
|
||||
#include <future>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <queue>
|
||||
#include <regex>
|
||||
#include <sstream>
|
||||
#include <thread>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <limits.h>
|
||||
#include <netdb.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/resource.h>
|
||||
|
@ -67,6 +68,7 @@
|
|||
#endif
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <utility>
|
||||
|
||||
namespace nix {
|
||||
|
||||
|
@ -81,8 +83,8 @@ struct HookInstance;
|
|||
/* A pointer to a goal. */
|
||||
class Goal;
|
||||
class DerivationGoal;
|
||||
typedef std::shared_ptr<Goal> GoalPtr;
|
||||
typedef std::weak_ptr<Goal> WeakGoalPtr;
|
||||
using GoalPtr = std::shared_ptr<Goal>;
|
||||
using WeakGoalPtr = std::weak_ptr<Goal>;
|
||||
|
||||
struct CompareGoalPtrs {
|
||||
bool operator()(const GoalPtr& a, const GoalPtr& b) const;
|
||||
|
@ -90,7 +92,7 @@ struct CompareGoalPtrs {
|
|||
|
||||
/* Set of goals. */
|
||||
typedef set<GoalPtr, CompareGoalPtrs> Goals;
|
||||
typedef list<WeakGoalPtr> WeakGoals;
|
||||
using WeakGoals = list<WeakGoalPtr>;
|
||||
|
||||
/* A map of paths to goals (and the other way around). */
|
||||
typedef map<Path, WeakGoalPtr> WeakGoalMap;
|
||||
|
@ -174,7 +176,7 @@ bool CompareGoalPtrs::operator()(const GoalPtr& a, const GoalPtr& b) const {
|
|||
return s1 < s2;
|
||||
}
|
||||
|
||||
typedef std::chrono::time_point<std::chrono::steady_clock> steady_time_point;
|
||||
using steady_time_point = std::chrono::time_point<std::chrono::steady_clock>;
|
||||
|
||||
/* A mapping used to remember for each child process to what goal it
|
||||
belongs, and file descriptors for receiving log data and output
|
||||
|
@ -816,7 +818,7 @@ class DerivationGoal : public Goal {
|
|||
/* Whether to run the build in a private network namespace. */
|
||||
bool privateNetwork = false;
|
||||
|
||||
typedef void (DerivationGoal::*GoalState)();
|
||||
using GoalState = void (DerivationGoal::*)();
|
||||
GoalState state;
|
||||
|
||||
/* Stuff we need to pass to initChild(). */
|
||||
|
@ -824,7 +826,7 @@ class DerivationGoal : public Goal {
|
|||
Path source;
|
||||
bool optional;
|
||||
explicit ChrootPath(Path source = "", bool optional = false)
|
||||
: source(source), optional(optional) {}
|
||||
: source(std::move(source)), optional(optional) {}
|
||||
};
|
||||
typedef map<Path, ChrootPath>
|
||||
DirsInChroot; // maps target path to source path
|
||||
|
@ -874,11 +876,11 @@ class DerivationGoal : public Goal {
|
|||
std::string machineName;
|
||||
|
||||
public:
|
||||
DerivationGoal(const Path& drvPath, const StringSet& wantedOutputs,
|
||||
Worker& worker, BuildMode buildMode = bmNormal);
|
||||
DerivationGoal(const Path& drvPath, StringSet wantedOutputs, Worker& worker,
|
||||
BuildMode buildMode = bmNormal);
|
||||
DerivationGoal(const Path& drvPath, const BasicDerivation& drv,
|
||||
Worker& worker, BuildMode buildMode = bmNormal);
|
||||
~DerivationGoal();
|
||||
~DerivationGoal() override;
|
||||
|
||||
/* Whether we need to perform hash rewriting if there are valid output paths.
|
||||
*/
|
||||
|
@ -982,13 +984,12 @@ class DerivationGoal : public Goal {
|
|||
|
||||
const Path DerivationGoal::homeDir = "/homeless-shelter";
|
||||
|
||||
DerivationGoal::DerivationGoal(const Path& drvPath,
|
||||
const StringSet& wantedOutputs, Worker& worker,
|
||||
BuildMode buildMode)
|
||||
DerivationGoal::DerivationGoal(const Path& drvPath, StringSet wantedOutputs,
|
||||
Worker& worker, BuildMode buildMode)
|
||||
: Goal(worker),
|
||||
useDerivation(true),
|
||||
drvPath(drvPath),
|
||||
wantedOutputs(wantedOutputs),
|
||||
wantedOutputs(std::move(wantedOutputs)),
|
||||
buildMode(buildMode) {
|
||||
state = &DerivationGoal::getDerivation;
|
||||
name = (format("building of '%1%'") % drvPath).str();
|
||||
|
@ -1004,7 +1005,7 @@ DerivationGoal::DerivationGoal(const Path& drvPath, const BasicDerivation& drv,
|
|||
useDerivation(false),
|
||||
drvPath(drvPath),
|
||||
buildMode(buildMode) {
|
||||
this->drv = std::unique_ptr<BasicDerivation>(new BasicDerivation(drv));
|
||||
this->drv = std::make_unique<BasicDerivation>(drv);
|
||||
state = &DerivationGoal::haveDerivation;
|
||||
name = (format("building of %1%") % showPaths(drv.outputPaths())).str();
|
||||
trace("created");
|
||||
|
@ -1473,7 +1474,7 @@ void DerivationGoal::tryToBuild() {
|
|||
case rpAccept:
|
||||
/* Yes, it has started doing so. Wait until we get
|
||||
EOF from the hook. */
|
||||
result.startTime = time(0); // inexact
|
||||
result.startTime = time(nullptr); // inexact
|
||||
state = &DerivationGoal::buildDone;
|
||||
started();
|
||||
return;
|
||||
|
@ -1554,7 +1555,7 @@ MakeError(NotDeterministic, BuildError)
|
|||
DLOG(INFO) << "builder process for '" << drvPath << "' finished";
|
||||
|
||||
result.timesBuilt++;
|
||||
result.stopTime = time(0);
|
||||
result.stopTime = time(nullptr);
|
||||
|
||||
/* So the child is gone now. */
|
||||
worker.childTerminated(this);
|
||||
|
@ -1674,7 +1675,7 @@ MakeError(NotDeterministic, BuildError)
|
|||
currentLine.clear();
|
||||
}
|
||||
|
||||
~LogSink() {
|
||||
~LogSink() override {
|
||||
if (currentLine != "") {
|
||||
currentLine += '\n';
|
||||
flushLine();
|
||||
|
@ -1785,7 +1786,7 @@ HookReply DerivationGoal::tryBuildHook() {
|
|||
return rpDecline;
|
||||
} else if (reply == "decline-permanently") {
|
||||
worker.tryBuildHook = false;
|
||||
worker.hook = 0;
|
||||
worker.hook = nullptr;
|
||||
return rpDecline;
|
||||
} else if (reply == "postpone") {
|
||||
return rpPostpone;
|
||||
|
@ -1796,7 +1797,7 @@ HookReply DerivationGoal::tryBuildHook() {
|
|||
if (e.errNo == EPIPE) {
|
||||
LOG(ERROR) << "build hook died unexpectedly: "
|
||||
<< chomp(drainFD(worker.hook->fromHook.readSide.get()));
|
||||
worker.hook = 0;
|
||||
worker.hook = nullptr;
|
||||
return rpDecline;
|
||||
} else {
|
||||
throw;
|
||||
|
@ -1892,10 +1893,10 @@ static void preloadNSS() {
|
|||
load its lookup libraries in the parent before any child gets a chance to.
|
||||
*/
|
||||
std::call_once(dns_resolve_flag, []() {
|
||||
struct addrinfo* res = NULL;
|
||||
struct addrinfo* res = nullptr;
|
||||
|
||||
if (getaddrinfo("this.pre-initializes.the.dns.resolvers.invalid.", "http",
|
||||
NULL, &res) != 0) {
|
||||
nullptr, &res) != 0) {
|
||||
if (res) {
|
||||
freeaddrinfo(res);
|
||||
}
|
||||
|
@ -2000,12 +2001,12 @@ void DerivationGoal::startBuilder() {
|
|||
by `nix-store --register-validity'. However, the deriver
|
||||
fields are left empty. */
|
||||
string s = get(drv->env, "exportReferencesGraph");
|
||||
Strings ss = tokenizeString<Strings>(s);
|
||||
auto ss = tokenizeString<Strings>(s);
|
||||
if (ss.size() % 2 != 0) {
|
||||
throw BuildError(
|
||||
format("odd number of tokens in 'exportReferencesGraph': '%1%'") % s);
|
||||
}
|
||||
for (Strings::iterator i = ss.begin(); i != ss.end();) {
|
||||
for (auto i = ss.begin(); i != ss.end();) {
|
||||
string fileName = *i++;
|
||||
checkStoreName(fileName); /* !!! abuse of this function */
|
||||
Path storePath = *i++;
|
||||
|
@ -2331,7 +2332,7 @@ void DerivationGoal::startBuilder() {
|
|||
throw SysError("putting pseudoterminal into raw mode");
|
||||
}
|
||||
|
||||
result.startTime = time(0);
|
||||
result.startTime = time(nullptr);
|
||||
|
||||
/* Fork a child to build the package. */
|
||||
ProcessOptions options;
|
||||
|
@ -2390,13 +2391,13 @@ void DerivationGoal::startBuilder() {
|
|||
not seem to be a workaround for this. (But who can tell
|
||||
from reading user_namespaces(7)?)
|
||||
See also https://lwn.net/Articles/621612/. */
|
||||
if (getuid() == 0 && setgroups(0, 0) == -1) {
|
||||
if (getuid() == 0 && setgroups(0, nullptr) == -1) {
|
||||
throw SysError("setgroups failed");
|
||||
}
|
||||
|
||||
size_t stackSize = 1 * 1024 * 1024;
|
||||
char* stack =
|
||||
(char*)mmap(0, stackSize, PROT_WRITE | PROT_READ,
|
||||
(char*)mmap(nullptr, stackSize, PROT_WRITE | PROT_READ,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
|
||||
if (stack == MAP_FAILED) {
|
||||
throw SysError("allocating stack");
|
||||
|
@ -2519,8 +2520,7 @@ void DerivationGoal::initTmpDir() {
|
|||
needed (attributes are not passed through the environment, so
|
||||
there is no size constraint). */
|
||||
if (!parsedDrv->getStructuredAttrs()) {
|
||||
StringSet passAsFile =
|
||||
tokenizeString<StringSet>(get(drv->env, "passAsFile"));
|
||||
auto passAsFile = tokenizeString<StringSet>(get(drv->env, "passAsFile"));
|
||||
int fileNr = 0;
|
||||
for (auto& i : drv->env) {
|
||||
if (passAsFile.find(i.first) == passAsFile.end()) {
|
||||
|
@ -2893,14 +2893,14 @@ void DerivationGoal::runChild() {
|
|||
outside of the namespace. Making a subtree private is
|
||||
local to the namespace, though, so setting MS_PRIVATE
|
||||
does not affect the outside world. */
|
||||
if (mount(0, "/", 0, MS_REC | MS_PRIVATE, 0) == -1) {
|
||||
if (mount(nullptr, "/", nullptr, MS_REC | MS_PRIVATE, nullptr) == -1) {
|
||||
throw SysError("unable to make '/' private mount");
|
||||
}
|
||||
|
||||
/* Bind-mount chroot directory to itself, to treat it as a
|
||||
different filesystem from /, as needed for pivot_root. */
|
||||
if (mount(chrootRootDir.c_str(), chrootRootDir.c_str(), 0, MS_BIND, 0) ==
|
||||
-1) {
|
||||
if (mount(chrootRootDir.c_str(), chrootRootDir.c_str(), nullptr, MS_BIND,
|
||||
nullptr) == -1) {
|
||||
throw SysError(format("unable to bind mount '%1%'") % chrootRootDir);
|
||||
}
|
||||
|
||||
|
@ -2970,8 +2970,8 @@ void DerivationGoal::runChild() {
|
|||
createDirs(dirOf(target));
|
||||
writeFile(target, "");
|
||||
}
|
||||
if (mount(source.c_str(), target.c_str(), "", MS_BIND | MS_REC, 0) ==
|
||||
-1) {
|
||||
if (mount(source.c_str(), target.c_str(), "", MS_BIND | MS_REC,
|
||||
nullptr) == -1) {
|
||||
throw SysError("bind mount from '%1%' to '%2%' failed", source,
|
||||
target);
|
||||
}
|
||||
|
@ -2986,8 +2986,8 @@ void DerivationGoal::runChild() {
|
|||
|
||||
/* Bind a new instance of procfs on /proc. */
|
||||
createDirs(chrootRootDir + "/proc");
|
||||
if (mount("none", (chrootRootDir + "/proc").c_str(), "proc", 0, 0) ==
|
||||
-1) {
|
||||
if (mount("none", (chrootRootDir + "/proc").c_str(), "proc", 0,
|
||||
nullptr) == -1) {
|
||||
throw SysError("mounting /proc");
|
||||
}
|
||||
|
||||
|
@ -3589,7 +3589,7 @@ void DerivationGoal::registerOutputs() {
|
|||
/* For debugging, print out the referenced and unreferenced
|
||||
paths. */
|
||||
for (auto& i : inputPaths) {
|
||||
PathSet::iterator j = references.find(i);
|
||||
auto j = references.find(i);
|
||||
if (j == references.end()) {
|
||||
DLOG(INFO) << "unreferenced input: '" << i << "'";
|
||||
} else {
|
||||
|
@ -3841,14 +3841,14 @@ void DerivationGoal::checkOutputs(
|
|||
auto i = output->find(name);
|
||||
if (i != output->end()) {
|
||||
Strings res;
|
||||
for (auto j = i->begin(); j != i->end(); ++j) {
|
||||
if (!j->is_string()) {
|
||||
for (auto& j : *i) {
|
||||
if (!j.is_string()) {
|
||||
throw Error(
|
||||
"attribute '%s' of derivation '%s' must be a list of "
|
||||
"strings",
|
||||
name, drvPath);
|
||||
}
|
||||
res.push_back(j->get<std::string>());
|
||||
res.push_back(j.get<std::string>());
|
||||
}
|
||||
checks.disallowedRequisites = res;
|
||||
return res;
|
||||
|
@ -3922,7 +3922,7 @@ void DerivationGoal::closeLogFile() {
|
|||
if (logFileSink) {
|
||||
logFileSink->flush();
|
||||
}
|
||||
logSink = logFileSink = 0;
|
||||
logSink = logFileSink = nullptr;
|
||||
fdLogFile = -1;
|
||||
}
|
||||
|
||||
|
@ -4099,13 +4099,13 @@ class SubstitutionGoal : public Goal {
|
|||
maintainRunningSubstitutions, maintainExpectedNar,
|
||||
maintainExpectedDownload;
|
||||
|
||||
typedef void (SubstitutionGoal::*GoalState)();
|
||||
using GoalState = void (SubstitutionGoal::*)();
|
||||
GoalState state;
|
||||
|
||||
public:
|
||||
SubstitutionGoal(const Path& storePath, Worker& worker,
|
||||
RepairFlag repair = NoRepair);
|
||||
~SubstitutionGoal();
|
||||
~SubstitutionGoal() override;
|
||||
|
||||
void timedOut() override { abort(); };
|
||||
|
||||
|
@ -4459,9 +4459,9 @@ GoalPtr Worker::makeSubstitutionGoal(const Path& path, RepairFlag repair) {
|
|||
|
||||
static void removeGoal(GoalPtr goal, WeakGoalMap& goalMap) {
|
||||
/* !!! inefficient */
|
||||
for (WeakGoalMap::iterator i = goalMap.begin(); i != goalMap.end();) {
|
||||
for (auto i = goalMap.begin(); i != goalMap.end();) {
|
||||
if (i->second.lock() == goal) {
|
||||
WeakGoalMap::iterator j = i;
|
||||
auto j = i;
|
||||
++j;
|
||||
goalMap.erase(i);
|
||||
i = j;
|
||||
|
@ -4570,7 +4570,7 @@ void Worker::run(const Goals& _topGoals) {
|
|||
|
||||
DLOG(INFO) << "entered goal loop";
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
|
||||
store.autoGC(false);
|
||||
|
@ -4704,7 +4704,8 @@ void Worker::waitForInput() {
|
|||
}
|
||||
}
|
||||
|
||||
if (select(fdMax, &fds, 0, 0, useTimeout ? &timeout : 0) == -1) {
|
||||
if (select(fdMax, &fds, nullptr, nullptr, useTimeout ? &timeout : nullptr) ==
|
||||
-1) {
|
||||
if (errno == EINTR) {
|
||||
return;
|
||||
}
|
||||
|
@ -4810,7 +4811,7 @@ unsigned int Worker::exitStatus() {
|
|||
}
|
||||
|
||||
bool Worker::pathContentsGood(const Path& path) {
|
||||
std::map<Path, bool>::iterator i = pathContentsGoodCache.find(path);
|
||||
auto i = pathContentsGoodCache.find(path);
|
||||
if (i != pathContentsGoodCache.end()) {
|
||||
return i->second;
|
||||
}
|
||||
|
@ -4874,7 +4875,7 @@ void LocalStore::buildPaths(const PathSet& drvPaths, BuildMode buildMode) {
|
|||
PathSet failed;
|
||||
for (auto& i : goals) {
|
||||
if (i->getExitCode() != Goal::ecSuccess) {
|
||||
DerivationGoal* i2 = dynamic_cast<DerivationGoal*>(i.get());
|
||||
auto* i2 = dynamic_cast<DerivationGoal*>(i.get());
|
||||
if (i2) {
|
||||
failed.insert(i2->getDrvPath());
|
||||
} else {
|
||||
|
|
2
third_party/nix/src/libstore/derivations.cc
vendored
2
third_party/nix/src/libstore/derivations.cc
vendored
|
@ -331,7 +331,7 @@ DrvHashes drvHashes;
|
|||
Hash hashDerivationModulo(Store& store, Derivation drv) {
|
||||
/* Return a fixed hash for fixed-output derivations. */
|
||||
if (drv.isFixedOutput()) {
|
||||
DerivationOutputs::const_iterator i = drv.outputs.begin();
|
||||
auto i = drv.outputs.begin();
|
||||
return hashString(htSHA256, "fixed:out:" + i->second.hashAlgo + ":" +
|
||||
i->second.hash + ":" + i->second.path);
|
||||
}
|
||||
|
|
14
third_party/nix/src/libstore/download.cc
vendored
14
third_party/nix/src/libstore/download.cc
vendored
|
@ -45,7 +45,7 @@ std::string resolveUri(const std::string& uri) {
|
|||
}
|
||||
|
||||
struct CurlDownloader : public Downloader {
|
||||
CURLM* curlm = 0;
|
||||
CURLM* curlm = nullptr;
|
||||
|
||||
std::random_device rd;
|
||||
std::mt19937 mt19937;
|
||||
|
@ -57,7 +57,7 @@ struct CurlDownloader : public Downloader {
|
|||
bool done = false; // whether either the success or failure function has
|
||||
// been called
|
||||
Callback<DownloadResult> callback;
|
||||
CURL* req = 0;
|
||||
CURL* req = nullptr;
|
||||
bool active =
|
||||
false; // whether the handle has been added to the multi object
|
||||
std::string status;
|
||||
|
@ -68,7 +68,7 @@ struct CurlDownloader : public Downloader {
|
|||
has been reached. */
|
||||
std::chrono::steady_clock::time_point embargo;
|
||||
|
||||
struct curl_slist* requestHeaders = 0;
|
||||
struct curl_slist* requestHeaders = nullptr;
|
||||
|
||||
std::string encoding;
|
||||
|
||||
|
@ -523,7 +523,7 @@ struct CurlDownloader : public Downloader {
|
|||
workerThread = std::thread([&]() { workerThreadEntry(); });
|
||||
}
|
||||
|
||||
~CurlDownloader() {
|
||||
~CurlDownloader() override {
|
||||
stopWorkerThread();
|
||||
|
||||
workerThread.join();
|
||||
|
@ -909,7 +909,7 @@ CachedDownloadResult Downloader::downloadCached(
|
|||
if (ss.size() >= 3 && ss[0] == url) {
|
||||
time_t lastChecked;
|
||||
if (string2Int(ss[2], lastChecked) &&
|
||||
(uint64_t)lastChecked + request.ttl >= (uint64_t)time(0)) {
|
||||
(uint64_t)lastChecked + request.ttl >= (uint64_t)time(nullptr)) {
|
||||
skip = true;
|
||||
result.effectiveUri = request.uri;
|
||||
result.etag = ss[1];
|
||||
|
@ -949,8 +949,8 @@ CachedDownloadResult Downloader::downloadCached(
|
|||
assert(!storePath.empty());
|
||||
replaceSymlink(storePath, fileLink);
|
||||
|
||||
writeFile(dataFile,
|
||||
url + "\n" + res.etag + "\n" + std::to_string(time(0)) + "\n");
|
||||
writeFile(dataFile, url + "\n" + res.etag + "\n" +
|
||||
std::to_string(time(nullptr)) + "\n");
|
||||
} catch (DownloadError& e) {
|
||||
if (storePath.empty()) {
|
||||
throw;
|
||||
|
|
|
@ -11,7 +11,7 @@ struct HashAndWriteSink : Sink {
|
|||
HashSink hashSink;
|
||||
explicit HashAndWriteSink(Sink& writeSink)
|
||||
: writeSink(writeSink), hashSink(htSHA256) {}
|
||||
virtual void operator()(const unsigned char* data, size_t len) {
|
||||
void operator()(const unsigned char* data, size_t len) override {
|
||||
writeSink(data, len);
|
||||
hashSink(data, len);
|
||||
}
|
||||
|
|
7
third_party/nix/src/libstore/gc.cc
vendored
7
third_party/nix/src/libstore/gc.cc
vendored
|
@ -1,11 +1,11 @@
|
|||
#include <algorithm>
|
||||
#include <cerrno>
|
||||
#include <climits>
|
||||
#include <functional>
|
||||
#include <queue>
|
||||
#include <random>
|
||||
#include <regex>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/statvfs.h>
|
||||
|
@ -147,7 +147,7 @@ void LocalStore::addTempRoot(const Path& path) {
|
|||
|
||||
/* Create the temporary roots file for this process. */
|
||||
if (!state->fdTempRoots) {
|
||||
while (1) {
|
||||
while (true) {
|
||||
AutoCloseFD fdGCLock = openGCLock(ltRead);
|
||||
|
||||
if (pathExists(fnTempRoots)) {
|
||||
|
@ -505,7 +505,8 @@ struct LocalStore::GCState {
|
|||
unsigned long long bytesInvalidated;
|
||||
bool moveToTrash = true;
|
||||
bool shouldDelete;
|
||||
explicit GCState(GCResults& results_) : results(results_), bytesInvalidated(0) {}
|
||||
explicit GCState(GCResults& results_)
|
||||
: results(results_), bytesInvalidated(0) {}
|
||||
};
|
||||
|
||||
bool LocalStore::isActiveTempFile(const GCState& state, const Path& path,
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#include <utility>
|
||||
|
||||
#include <glog/logging.h>
|
||||
|
||||
#include "binary-cache-store.hh"
|
||||
|
@ -21,8 +23,8 @@ class HttpBinaryCacheStore : public BinaryCacheStore {
|
|||
Sync<State> _state;
|
||||
|
||||
public:
|
||||
HttpBinaryCacheStore(const Params& params, const Path& _cacheUri)
|
||||
: BinaryCacheStore(params), cacheUri(_cacheUri) {
|
||||
HttpBinaryCacheStore(const Params& params, Path _cacheUri)
|
||||
: BinaryCacheStore(params), cacheUri(std::move(_cacheUri)) {
|
||||
if (cacheUri.back() == '/') {
|
||||
cacheUri.pop_back();
|
||||
}
|
||||
|
@ -157,7 +159,7 @@ static RegisterStoreImplementation regStore(
|
|||
std::string(uri, 0, 8) != "https://" &&
|
||||
(getEnv("_NIX_FORCE_HTTP_BINARY_CACHE_STORE") != "1" ||
|
||||
std::string(uri, 0, 7) != "file://")) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
auto store = std::make_shared<HttpBinaryCacheStore>(params, uri);
|
||||
store->init();
|
||||
|
|
|
@ -262,7 +262,7 @@ static RegisterStoreImplementation regStore(
|
|||
[](const std::string& uri,
|
||||
const Store::Params& params) -> std::shared_ptr<Store> {
|
||||
if (std::string(uri, 0, uriScheme.size()) != uriScheme) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
return std::make_shared<LegacySSHStore>(
|
||||
std::string(uri, uriScheme.size()), params);
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
#include <utility>
|
||||
|
||||
#include "binary-cache-store.hh"
|
||||
#include "globals.hh"
|
||||
#include "nar-info-disk-cache.hh"
|
||||
|
@ -9,8 +11,8 @@ class LocalBinaryCacheStore : public BinaryCacheStore {
|
|||
Path binaryCacheDir;
|
||||
|
||||
public:
|
||||
LocalBinaryCacheStore(const Params& params, const Path& binaryCacheDir)
|
||||
: BinaryCacheStore(params), binaryCacheDir(binaryCacheDir) {}
|
||||
LocalBinaryCacheStore(const Params& params, Path binaryCacheDir)
|
||||
: BinaryCacheStore(params), binaryCacheDir(std::move(binaryCacheDir)) {}
|
||||
|
||||
void init() override;
|
||||
|
||||
|
@ -78,7 +80,7 @@ static RegisterStoreImplementation regStore(
|
|||
const Store::Params& params) -> std::shared_ptr<Store> {
|
||||
if (getEnv("_NIX_FORCE_HTTP_BINARY_CACHE_STORE") == "1" ||
|
||||
std::string(uri, 0, 7) != "file://") {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
auto store =
|
||||
std::make_shared<LocalBinaryCacheStore>(params, std::string(uri, 7));
|
||||
|
|
27
third_party/nix/src/libstore/local-store.cc
vendored
27
third_party/nix/src/libstore/local-store.cc
vendored
|
@ -1,19 +1,19 @@
|
|||
#include "local-store.hh"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cerrno>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <iostream>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <glog/logging.h>
|
||||
#include <grp.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <utime.h>
|
||||
|
||||
|
@ -321,7 +321,7 @@ void LocalStore::openDB(State& state, bool create) {
|
|||
auto& db(state.db);
|
||||
if (sqlite3_open_v2(dbPath.c_str(), &db.db,
|
||||
SQLITE_OPEN_READWRITE | (create ? SQLITE_OPEN_CREATE : 0),
|
||||
0) != SQLITE_OK) {
|
||||
nullptr) != SQLITE_OK) {
|
||||
throw Error(format("cannot open Nix database '%1%'") % dbPath);
|
||||
}
|
||||
|
||||
|
@ -364,16 +364,16 @@ void LocalStore::openDB(State& state, bool create) {
|
|||
prevMode = string((const char*)sqlite3_column_text(stmt, 0));
|
||||
}
|
||||
if (prevMode != mode &&
|
||||
sqlite3_exec(db, ("pragma main.journal_mode = " + mode + ";").c_str(), 0,
|
||||
0, 0) != SQLITE_OK) {
|
||||
sqlite3_exec(db, ("pragma main.journal_mode = " + mode + ";").c_str(),
|
||||
nullptr, nullptr, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, "setting journal mode");
|
||||
}
|
||||
|
||||
/* Increase the auto-checkpoint interval to 40000 pages. This
|
||||
seems enough to ensure that instantiating the NixOS system
|
||||
derivation is done in a single fsync(). */
|
||||
if (mode == "wal" && sqlite3_exec(db, "pragma wal_autocheckpoint = 40000;", 0,
|
||||
0, 0) != SQLITE_OK) {
|
||||
if (mode == "wal" && sqlite3_exec(db, "pragma wal_autocheckpoint = 40000;",
|
||||
nullptr, nullptr, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, "setting autocheckpoint interval");
|
||||
}
|
||||
|
||||
|
@ -404,7 +404,8 @@ void LocalStore::makeStoreWritable() {
|
|||
throw SysError("setting up a private mount namespace");
|
||||
}
|
||||
|
||||
if (mount(0, realStoreDir.c_str(), "none", MS_REMOUNT | MS_BIND, 0) == -1) {
|
||||
if (mount(nullptr, realStoreDir.c_str(), "none", MS_REMOUNT | MS_BIND,
|
||||
nullptr) == -1) {
|
||||
throw SysError(format("remounting %1% writable") % realStoreDir);
|
||||
}
|
||||
}
|
||||
|
@ -585,7 +586,7 @@ void LocalStore::checkDerivationOutputs(const Path& drvPath,
|
|||
drvName = string(drvName, 0, drvName.size() - drvExtension.size());
|
||||
|
||||
if (drv.isFixedOutput()) {
|
||||
DerivationOutputs::const_iterator out = drv.outputs.find("out");
|
||||
auto out = drv.outputs.find("out");
|
||||
if (out == drv.outputs.end()) {
|
||||
throw Error(
|
||||
format("derivation '%1%' does not have an output named 'out'") %
|
||||
|
@ -597,7 +598,7 @@ void LocalStore::checkDerivationOutputs(const Path& drvPath,
|
|||
out->second.parseHashInfo(recursive, h);
|
||||
Path outPath = makeFixedOutputPath(recursive, h, drvName);
|
||||
|
||||
StringPairs::const_iterator j = drv.env.find("out");
|
||||
auto j = drv.env.find("out");
|
||||
if (out->second.path != outPath || j == drv.env.end() ||
|
||||
j->second != outPath) {
|
||||
throw Error(
|
||||
|
@ -618,7 +619,7 @@ void LocalStore::checkDerivationOutputs(const Path& drvPath,
|
|||
|
||||
for (auto& i : drv.outputs) {
|
||||
Path outPath = makeOutputPath(i.first, h, drvName);
|
||||
StringPairs::const_iterator j = drv.env.find(i.first);
|
||||
auto j = drv.env.find(i.first);
|
||||
if (i.second.path != outPath || j == drv.env.end() ||
|
||||
j->second != outPath) {
|
||||
throw Error(format("derivation '%1%' has incorrect output '%2%', "
|
||||
|
@ -640,7 +641,7 @@ uint64_t LocalStore::addValidPath(State& state, const ValidPathInfo& info,
|
|||
|
||||
state.stmtRegisterValidPath
|
||||
.use()(info.path)(info.narHash.to_string(Base16))(
|
||||
info.registrationTime == 0 ? time(0) : info.registrationTime)(
|
||||
info.registrationTime == 0 ? time(nullptr) : info.registrationTime)(
|
||||
info.deriver, info.deriver != "")(info.narSize, info.narSize != 0)(
|
||||
info.ultimate ? 1 : 0, info.ultimate)(
|
||||
concatStringsSep(" ", info.sigs), !info.sigs.empty())(
|
||||
|
|
2
third_party/nix/src/libstore/misc.cc
vendored
2
third_party/nix/src/libstore/misc.cc
vendored
|
@ -18,7 +18,7 @@ void Store::computeFSClosure(const PathSet& startPaths, PathSet& paths_,
|
|||
std::exception_ptr exc;
|
||||
};
|
||||
|
||||
Sync<State> state_(State{0, paths_, 0});
|
||||
Sync<State> state_(State{0, paths_, nullptr});
|
||||
|
||||
std::function<void(const Path&)> enqueue;
|
||||
|
||||
|
|
3
third_party/nix/src/libstore/nar-accessor.cc
vendored
3
third_party/nix/src/libstore/nar-accessor.cc
vendored
|
@ -4,6 +4,7 @@
|
|||
#include <map>
|
||||
#include <nlohmann/json.hpp>
|
||||
#include <stack>
|
||||
#include <utility>
|
||||
|
||||
#include "archive.hh"
|
||||
#include "json.hh"
|
||||
|
@ -99,7 +100,7 @@ struct NarAccessor : public FSAccessor {
|
|||
}
|
||||
|
||||
NarAccessor(const std::string& listing, GetNarBytes getNarBytes)
|
||||
: getNarBytes(getNarBytes) {
|
||||
: getNarBytes(std::move(getNarBytes)) {
|
||||
using json = nlohmann::json;
|
||||
|
||||
std::function<void(NarMember&, json&)> recurse;
|
||||
|
|
|
@ -116,7 +116,7 @@ class NarInfoDiskCacheImpl : public NarInfoDiskCache {
|
|||
|
||||
/* Periodically purge expired entries from the database. */
|
||||
retrySQLite<void>([&]() {
|
||||
auto now = time(0);
|
||||
auto now = time(nullptr);
|
||||
|
||||
SQLiteStmt queryLastPurge(state->db, "select value from LastPurge");
|
||||
auto queryLastPurge_(queryLastPurge.use());
|
||||
|
@ -157,7 +157,8 @@ class NarInfoDiskCacheImpl : public NarInfoDiskCache {
|
|||
|
||||
// FIXME: race
|
||||
|
||||
state->insertCache.use()(uri)(time(0))(storeDir)(wantMassQuery)(priority)
|
||||
state->insertCache
|
||||
.use()(uri)(time(nullptr))(storeDir)(wantMassQuery)(priority)
|
||||
.exec();
|
||||
assert(sqlite3_changes(state->db) == 1);
|
||||
state->caches[uri] = Cache{(int)sqlite3_last_insert_rowid(state->db),
|
||||
|
@ -198,18 +199,18 @@ class NarInfoDiskCacheImpl : public NarInfoDiskCache {
|
|||
|
||||
auto& cache(getCache(*state, uri));
|
||||
|
||||
auto now = time(0);
|
||||
auto now = time(nullptr);
|
||||
|
||||
auto queryNAR(state->queryNAR.use()(cache.id)(hashPart)(
|
||||
now - settings.ttlNegativeNarInfoCache)(
|
||||
now - settings.ttlPositiveNarInfoCache));
|
||||
|
||||
if (!queryNAR.next()) {
|
||||
return {oUnknown, 0};
|
||||
return {oUnknown, nullptr};
|
||||
}
|
||||
|
||||
if (!queryNAR.getInt(0)) {
|
||||
return {oInvalid, 0};
|
||||
return {oInvalid, nullptr};
|
||||
}
|
||||
|
||||
auto narInfo = make_ref<NarInfo>();
|
||||
|
@ -254,21 +255,22 @@ class NarInfoDiskCacheImpl : public NarInfoDiskCache {
|
|||
|
||||
state->insertNAR
|
||||
.use()(cache.id)(hashPart)(storePathToName(info->path))(
|
||||
narInfo ? narInfo->url : "", narInfo != 0)(
|
||||
narInfo ? narInfo->compression : "", narInfo != 0)(
|
||||
narInfo ? narInfo->url : "", narInfo != nullptr)(
|
||||
narInfo ? narInfo->compression : "", narInfo != nullptr)(
|
||||
narInfo && narInfo->fileHash ? narInfo->fileHash.to_string()
|
||||
: "",
|
||||
narInfo && narInfo->fileHash)(
|
||||
narInfo ? narInfo->fileSize : 0,
|
||||
narInfo != 0 && narInfo->fileSize)(info->narHash.to_string())(
|
||||
narInfo != nullptr &&
|
||||
narInfo->fileSize)(info->narHash.to_string())(
|
||||
info->narSize)(concatStringsSep(" ", info->shortRefs()))(
|
||||
info->deriver != "" ? baseNameOf(info->deriver) : "",
|
||||
info->deriver !=
|
||||
"")(concatStringsSep(" ", info->sigs))(info->ca)(time(0))
|
||||
info->deriver != "")(concatStringsSep(" ", info->sigs))(
|
||||
info->ca)(time(nullptr))
|
||||
.exec();
|
||||
|
||||
} else {
|
||||
state->insertMissingNAR.use()(cache.id)(hashPart)(time(0)).exec();
|
||||
state->insertMissingNAR.use()(cache.id)(hashPart)(time(nullptr)).exec();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
#include <cerrno>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <regex>
|
||||
#include <utility>
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
@ -27,7 +28,7 @@ static void makeWritable(const Path& path) {
|
|||
|
||||
struct MakeReadOnly {
|
||||
Path path;
|
||||
explicit MakeReadOnly(const Path& path) : path(path) {}
|
||||
explicit MakeReadOnly(Path path) : path(std::move(path)) {}
|
||||
~MakeReadOnly() {
|
||||
try {
|
||||
/* This will make the path read-only. */
|
||||
|
|
|
@ -74,13 +74,13 @@ std::optional<Strings> ParsedDerivation::getStringsAttr(
|
|||
drvPath);
|
||||
}
|
||||
Strings res;
|
||||
for (auto j = i->begin(); j != i->end(); ++j) {
|
||||
if (!j->is_string()) {
|
||||
for (const auto& j : *i) {
|
||||
if (!j.is_string()) {
|
||||
throw Error(
|
||||
"attribute '%s' of derivation '%s' must be a list of strings",
|
||||
name, drvPath);
|
||||
}
|
||||
res.push_back(j->get<std::string>());
|
||||
res.push_back(j.get<std::string>());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
4
third_party/nix/src/libstore/pathlocks.cc
vendored
4
third_party/nix/src/libstore/pathlocks.cc
vendored
|
@ -97,7 +97,7 @@ bool PathLocks::lockPaths(const PathSet& paths, const string& waitMsg,
|
|||
|
||||
AutoCloseFD fd;
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
/* Open/create the lock file. */
|
||||
fd = openLockFile(lockPath, true);
|
||||
|
||||
|
@ -136,7 +136,7 @@ bool PathLocks::lockPaths(const PathSet& paths, const string& waitMsg,
|
|||
}
|
||||
|
||||
/* Use borrow so that the descriptor isn't closed. */
|
||||
fds.push_back(FDPair(fd.release(), lockPath));
|
||||
fds.emplace_back(fd.release(), lockPath);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
7
third_party/nix/src/libstore/profiles.cc
vendored
7
third_party/nix/src/libstore/profiles.cc
vendored
|
@ -1,8 +1,9 @@
|
|||
#include "profiles.hh"
|
||||
|
||||
#include <errno.h>
|
||||
#include <cerrno>
|
||||
#include <cstdio>
|
||||
|
||||
#include <glog/logging.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
@ -213,7 +214,7 @@ void deleteGenerationsOlderThan(const Path& profile, time_t t, bool dryRun) {
|
|||
|
||||
void deleteGenerationsOlderThan(const Path& profile, const string& timeSpec,
|
||||
bool dryRun) {
|
||||
time_t curTime = time(0);
|
||||
time_t curTime = time(nullptr);
|
||||
string strDays = string(timeSpec, 0, timeSpec.size() - 1);
|
||||
int days;
|
||||
|
||||
|
|
10
third_party/nix/src/libstore/references.cc
vendored
10
third_party/nix/src/libstore/references.cc
vendored
|
@ -18,11 +18,11 @@ static void search(const unsigned char* s, size_t len, StringSet& hashes,
|
|||
static bool initialised = false;
|
||||
static bool isBase32[256];
|
||||
if (!initialised) {
|
||||
for (unsigned int i = 0; i < 256; ++i) {
|
||||
isBase32[i] = false;
|
||||
for (bool& i : isBase32) {
|
||||
i = false;
|
||||
}
|
||||
for (unsigned int i = 0; i < base32Chars.size(); ++i) {
|
||||
isBase32[(unsigned char)base32Chars[i]] = true;
|
||||
for (char base32Char : base32Chars) {
|
||||
isBase32[(unsigned char)base32Char] = true;
|
||||
}
|
||||
initialised = true;
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ struct RefScanSink : Sink {
|
|||
|
||||
RefScanSink() : hashSink(htSHA256) {}
|
||||
|
||||
void operator()(const unsigned char* data, size_t len);
|
||||
void operator()(const unsigned char* data, size_t len) override;
|
||||
};
|
||||
|
||||
void RefScanSink::operator()(const unsigned char* data, size_t len) {
|
||||
|
|
18
third_party/nix/src/libstore/remote-store.cc
vendored
18
third_party/nix/src/libstore/remote-store.cc
vendored
|
@ -1,8 +1,8 @@
|
|||
#include "remote-store.hh"
|
||||
|
||||
#include <cerrno>
|
||||
#include <cstring>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <glog/logging.h>
|
||||
#include <sys/socket.h>
|
||||
|
@ -230,7 +230,7 @@ struct ConnectionHandle {
|
|||
|
||||
RemoteStore::Connection* operator->() { return &*handle; }
|
||||
|
||||
void processStderr(Sink* sink = 0, Source* source = 0) {
|
||||
void processStderr(Sink* sink = nullptr, Source* source = nullptr) {
|
||||
auto ex = handle->processStderr(sink, source);
|
||||
if (ex) {
|
||||
daemonException = true;
|
||||
|
@ -324,7 +324,7 @@ void RemoteStore::querySubstitutablePathInfos(const PathSet& paths,
|
|||
} else {
|
||||
conn->to << wopQuerySubstitutablePathInfos << paths;
|
||||
conn.processStderr();
|
||||
size_t count = readNum<size_t>(conn->from);
|
||||
auto count = readNum<size_t>(conn->from);
|
||||
for (size_t n = 0; n < count; n++) {
|
||||
Path path = readStorePath(*this, conn->from);
|
||||
SubstitutablePathInfo& info(infos[path]);
|
||||
|
@ -388,7 +388,7 @@ void RemoteStore::queryReferrers(const Path& path, PathSet& referrers) {
|
|||
auto conn(getConnection());
|
||||
conn->to << wopQueryReferrers << path;
|
||||
conn.processStderr();
|
||||
PathSet referrers2 = readStorePaths<PathSet>(*this, conn->from);
|
||||
auto referrers2 = readStorePaths<PathSet>(*this, conn->from);
|
||||
referrers.insert(referrers2.begin(), referrers2.end());
|
||||
}
|
||||
|
||||
|
@ -442,7 +442,7 @@ void RemoteStore::addToStore(const ValidPathInfo& info, Source& source,
|
|||
;
|
||||
});
|
||||
|
||||
conn.processStderr(0, source2.get());
|
||||
conn.processStderr(nullptr, source2.get());
|
||||
|
||||
auto importedPaths = readStorePaths<PathSet>(*this, conn->from);
|
||||
assert(importedPaths.size() <= 1);
|
||||
|
@ -457,7 +457,7 @@ void RemoteStore::addToStore(const ValidPathInfo& info, Source& source,
|
|||
if (!tunnel) {
|
||||
copyNAR(source, conn->to);
|
||||
}
|
||||
conn.processStderr(0, tunnel ? &source : nullptr);
|
||||
conn.processStderr(nullptr, tunnel ? &source : nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -591,7 +591,7 @@ Roots RemoteStore::findRoots(bool censor) {
|
|||
auto conn(getConnection());
|
||||
conn->to << wopFindRoots;
|
||||
conn.processStderr();
|
||||
size_t count = readNum<size_t>(conn->from);
|
||||
auto count = readNum<size_t>(conn->from);
|
||||
Roots result;
|
||||
while (count--) {
|
||||
Path link = readString(conn->from);
|
||||
|
@ -704,7 +704,7 @@ std::exception_ptr RemoteStore::Connection::processStderr(Sink* sink,
|
|||
if (!source) {
|
||||
throw Error("no source");
|
||||
}
|
||||
size_t len = readNum<size_t>(from);
|
||||
auto len = readNum<size_t>(from);
|
||||
auto buf = std::make_unique<unsigned char[]>(len);
|
||||
writeString(buf.get(), source->read(buf.get(), len), to);
|
||||
to.flush();
|
||||
|
@ -742,7 +742,7 @@ static RegisterStoreImplementation regStore(
|
|||
[](const std::string& uri,
|
||||
const Store::Params& params) -> std::shared_ptr<Store> {
|
||||
if (std::string(uri, 0, uriScheme.size()) != uriScheme) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
return std::make_shared<UDSRemoteStore>(
|
||||
std::string(uri, uriScheme.size()), params);
|
||||
|
|
18
third_party/nix/src/libstore/sqlite.cc
vendored
18
third_party/nix/src/libstore/sqlite.cc
vendored
|
@ -31,7 +31,7 @@ namespace nix {
|
|||
SQLite::SQLite(const Path& path) {
|
||||
if (sqlite3_open_v2(path.c_str(), &db,
|
||||
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
|
||||
0) != SQLITE_OK) {
|
||||
nullptr) != SQLITE_OK) {
|
||||
throw Error(format("cannot open SQLite database '%s'") % path);
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,8 @@ SQLite::~SQLite() {
|
|||
|
||||
void SQLite::exec(const std::string& stmt) {
|
||||
retrySQLite<void>([&]() {
|
||||
if (sqlite3_exec(db, stmt.c_str(), 0, 0, 0) != SQLITE_OK) {
|
||||
if (sqlite3_exec(db, stmt.c_str(), nullptr, nullptr, nullptr) !=
|
||||
SQLITE_OK) {
|
||||
throwSQLiteError(db, format("executing SQLite statement '%s'") % stmt);
|
||||
}
|
||||
});
|
||||
|
@ -57,7 +58,7 @@ void SQLite::exec(const std::string& stmt) {
|
|||
void SQLiteStmt::create(sqlite3* db, const string& sql) {
|
||||
checkInterrupt();
|
||||
assert(!stmt);
|
||||
if (sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, 0) != SQLITE_OK) {
|
||||
if (sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, fmt("creating statement '%s'", sql));
|
||||
}
|
||||
this->db = db;
|
||||
|
@ -149,14 +150,14 @@ bool SQLiteStmt::Use::isNull(int col) {
|
|||
|
||||
SQLiteTxn::SQLiteTxn(sqlite3* db) {
|
||||
this->db = db;
|
||||
if (sqlite3_exec(db, "begin;", 0, 0, 0) != SQLITE_OK) {
|
||||
if (sqlite3_exec(db, "begin;", nullptr, nullptr, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, "starting transaction");
|
||||
}
|
||||
active = true;
|
||||
}
|
||||
|
||||
void SQLiteTxn::commit() {
|
||||
if (sqlite3_exec(db, "commit;", 0, 0, 0) != SQLITE_OK) {
|
||||
if (sqlite3_exec(db, "commit;", nullptr, nullptr, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, "committing transaction");
|
||||
}
|
||||
active = false;
|
||||
|
@ -164,7 +165,8 @@ void SQLiteTxn::commit() {
|
|||
|
||||
SQLiteTxn::~SQLiteTxn() {
|
||||
try {
|
||||
if (active && sqlite3_exec(db, "rollback;", 0, 0, 0) != SQLITE_OK) {
|
||||
if (active &&
|
||||
sqlite3_exec(db, "rollback;", nullptr, nullptr, nullptr) != SQLITE_OK) {
|
||||
throwSQLiteError(db, "aborting transaction");
|
||||
}
|
||||
} catch (...) {
|
||||
|
@ -175,7 +177,7 @@ SQLiteTxn::~SQLiteTxn() {
|
|||
void handleSQLiteBusy(const SQLiteBusy& e) {
|
||||
static std::atomic<time_t> lastWarned{0};
|
||||
|
||||
time_t now = time(0);
|
||||
time_t now = time(nullptr);
|
||||
|
||||
if (now > lastWarned + 10) {
|
||||
lastWarned = now;
|
||||
|
@ -188,7 +190,7 @@ void handleSQLiteBusy(const SQLiteBusy& e) {
|
|||
struct timespec t;
|
||||
t.tv_sec = 0;
|
||||
t.tv_nsec = (random() % 100) * 1000 * 1000; /* <= 0.1s */
|
||||
nanosleep(&t, 0);
|
||||
nanosleep(&t, nullptr);
|
||||
}
|
||||
|
||||
} // namespace nix
|
||||
|
|
4
third_party/nix/src/libstore/ssh-store.cc
vendored
4
third_party/nix/src/libstore/ssh-store.cc
vendored
|
@ -27,7 +27,7 @@ class SSHStore : public RemoteStore {
|
|||
|
||||
std::string getUri() override { return uriScheme + host; }
|
||||
|
||||
bool sameMachine() { return false; }
|
||||
bool sameMachine() override { return false; }
|
||||
|
||||
void narFromPath(const Path& path, Sink& sink) override;
|
||||
|
||||
|
@ -78,7 +78,7 @@ static RegisterStoreImplementation regStore([](const std::string& uri,
|
|||
const Store::Params& params)
|
||||
-> std::shared_ptr<Store> {
|
||||
if (std::string(uri, 0, uriScheme.size()) != uriScheme) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
return std::make_shared<SSHStore>(std::string(uri, uriScheme.size()), params);
|
||||
});
|
||||
|
|
6
third_party/nix/src/libstore/ssh.cc
vendored
6
third_party/nix/src/libstore/ssh.cc
vendored
|
@ -1,12 +1,14 @@
|
|||
#include "ssh.hh"
|
||||
|
||||
#include <utility>
|
||||
|
||||
namespace nix {
|
||||
|
||||
SSHMaster::SSHMaster(const std::string& host, const std::string& keyFile,
|
||||
SSHMaster::SSHMaster(const std::string& host, std::string keyFile,
|
||||
bool useMaster, bool compress, int logFD)
|
||||
: host(host),
|
||||
fakeSSH(host == "localhost"),
|
||||
keyFile(keyFile),
|
||||
keyFile(std::move(keyFile)),
|
||||
useMaster(useMaster && !fakeSSH),
|
||||
compress(compress),
|
||||
logFD(logFD) {
|
||||
|
|
2
third_party/nix/src/libstore/ssh.hh
vendored
2
third_party/nix/src/libstore/ssh.hh
vendored
|
@ -25,7 +25,7 @@ class SSHMaster {
|
|||
void addCommonSSHOpts(Strings& args);
|
||||
|
||||
public:
|
||||
SSHMaster(const std::string& host, const std::string& keyFile, bool useMaster,
|
||||
SSHMaster(const std::string& host, std::string keyFile, bool useMaster,
|
||||
bool compress, int logFD = -1);
|
||||
|
||||
struct Connection {
|
||||
|
|
13
third_party/nix/src/libstore/store-api.cc
vendored
13
third_party/nix/src/libstore/store-api.cc
vendored
|
@ -251,7 +251,7 @@ bool Store::isValidPath(const Path& storePath) {
|
|||
auto res = state_->pathInfoCache.get(hashPart);
|
||||
if (res) {
|
||||
stats.narInfoReadAverted++;
|
||||
return *res != 0;
|
||||
return *res != nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -261,7 +261,8 @@ bool Store::isValidPath(const Path& storePath) {
|
|||
stats.narInfoReadAverted++;
|
||||
auto state_(state.lock());
|
||||
state_->pathInfoCache.upsert(
|
||||
hashPart, res.first == NarInfoDiskCache::oInvalid ? 0 : res.second);
|
||||
hashPart,
|
||||
res.first == NarInfoDiskCache::oInvalid ? nullptr : res.second);
|
||||
return res.first == NarInfoDiskCache::oValid;
|
||||
}
|
||||
}
|
||||
|
@ -270,7 +271,7 @@ bool Store::isValidPath(const Path& storePath) {
|
|||
|
||||
if (diskCache && !valid) {
|
||||
// FIXME: handle valid = true case.
|
||||
diskCache->upsertNarInfo(getUri(), hashPart, 0);
|
||||
diskCache->upsertNarInfo(getUri(), hashPart, nullptr);
|
||||
}
|
||||
|
||||
return valid;
|
||||
|
@ -329,7 +330,7 @@ void Store::queryPathInfo(const Path& storePath,
|
|||
auto state_(state.lock());
|
||||
state_->pathInfoCache.upsert(
|
||||
hashPart,
|
||||
res.first == NarInfoDiskCache::oInvalid ? 0 : res.second);
|
||||
res.first == NarInfoDiskCache::oInvalid ? nullptr : res.second);
|
||||
if (res.first == NarInfoDiskCache::oInvalid ||
|
||||
(res.second->path != storePath &&
|
||||
storePathToName(storePath) != "")) {
|
||||
|
@ -842,7 +843,7 @@ void Store::addToStore(const ValidPathInfo& info, const ref<std::string>& nar,
|
|||
namespace nix {
|
||||
|
||||
RegisterStoreImplementation::Implementations*
|
||||
RegisterStoreImplementation::implementations = 0;
|
||||
RegisterStoreImplementation::implementations = nullptr;
|
||||
|
||||
/* Split URI into protocol+hierarchy part and its parameter set. */
|
||||
std::pair<std::string, Store::Params> splitUriAndParams(
|
||||
|
@ -862,7 +863,7 @@ std::pair<std::string, Store::Params> splitUriAndParams(
|
|||
throw Error("invalid URI parameter '%s'", value);
|
||||
}
|
||||
try {
|
||||
decoded += std::stoul(std::string(value, i + 1, 2), 0, 16);
|
||||
decoded += std::stoul(std::string(value, i + 1, 2), nullptr, 16);
|
||||
i += 3;
|
||||
} catch (...) {
|
||||
throw Error("invalid URI parameter '%s'", value);
|
||||
|
|
16
third_party/nix/src/libutil/archive.cc
vendored
16
third_party/nix/src/libutil/archive.cc
vendored
|
@ -199,7 +199,7 @@ static void parse(ParseSink& sink, Source& source, const Path& path) {
|
|||
|
||||
std::map<Path, int, CaseInsensitiveCompare> names;
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
|
||||
s = readString(source);
|
||||
|
@ -254,7 +254,7 @@ static void parse(ParseSink& sink, Source& source, const Path& path) {
|
|||
throw badArchive("expected open tag");
|
||||
}
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
|
||||
s = readString(source);
|
||||
|
@ -323,14 +323,14 @@ struct RestoreSink : ParseSink {
|
|||
Path dstPath;
|
||||
AutoCloseFD fd;
|
||||
|
||||
void createDirectory(const Path& path) {
|
||||
void createDirectory(const Path& path) override {
|
||||
Path p = dstPath + path;
|
||||
if (mkdir(p.c_str(), 0777) == -1) {
|
||||
throw SysError(format("creating directory '%1%'") % p);
|
||||
}
|
||||
};
|
||||
|
||||
void createRegularFile(const Path& path) {
|
||||
void createRegularFile(const Path& path) override {
|
||||
Path p = dstPath + path;
|
||||
fd = open(p.c_str(), O_CREAT | O_EXCL | O_WRONLY | O_CLOEXEC, 0666);
|
||||
if (!fd) {
|
||||
|
@ -338,7 +338,7 @@ struct RestoreSink : ParseSink {
|
|||
}
|
||||
}
|
||||
|
||||
void isExecutable() {
|
||||
void isExecutable() override {
|
||||
struct stat st;
|
||||
if (fstat(fd.get(), &st) == -1) {
|
||||
throw SysError("fstat");
|
||||
|
@ -348,7 +348,7 @@ struct RestoreSink : ParseSink {
|
|||
}
|
||||
}
|
||||
|
||||
void preallocateContents(unsigned long long len) {
|
||||
void preallocateContents(unsigned long long len) override {
|
||||
#if HAVE_POSIX_FALLOCATE
|
||||
if (len) {
|
||||
errno = posix_fallocate(fd.get(), 0, len);
|
||||
|
@ -363,11 +363,11 @@ struct RestoreSink : ParseSink {
|
|||
#endif
|
||||
}
|
||||
|
||||
void receiveContents(unsigned char* data, unsigned int len) {
|
||||
void receiveContents(unsigned char* data, unsigned int len) override {
|
||||
writeFull(fd.get(), data, len);
|
||||
}
|
||||
|
||||
void createSymlink(const Path& path, const string& target) {
|
||||
void createSymlink(const Path& path, const string& target) override {
|
||||
Path p = dstPath + path;
|
||||
nix::createSymlink(target, p);
|
||||
}
|
||||
|
|
12
third_party/nix/src/libutil/compression.cc
vendored
12
third_party/nix/src/libutil/compression.cc
vendored
|
@ -57,7 +57,7 @@ struct XzDecompressionSink : CompressionSink {
|
|||
strm.avail_out = sizeof(outbuf);
|
||||
}
|
||||
|
||||
~XzDecompressionSink() { lzma_end(&strm); }
|
||||
~XzDecompressionSink() override { lzma_end(&strm); }
|
||||
|
||||
void finish() override {
|
||||
CompressionSink::flush();
|
||||
|
@ -103,7 +103,7 @@ struct BzipDecompressionSink : ChunkedCompressionSink {
|
|||
strm.avail_out = sizeof(outbuf);
|
||||
}
|
||||
|
||||
~BzipDecompressionSink() { BZ2_bzDecompressEnd(&strm); }
|
||||
~BzipDecompressionSink() override { BZ2_bzDecompressEnd(&strm); }
|
||||
|
||||
void finish() override {
|
||||
flush();
|
||||
|
@ -147,7 +147,7 @@ struct BrotliDecompressionSink : ChunkedCompressionSink {
|
|||
}
|
||||
}
|
||||
|
||||
~BrotliDecompressionSink() { BrotliDecoderDestroyInstance(state); }
|
||||
~BrotliDecompressionSink() override { BrotliDecoderDestroyInstance(state); }
|
||||
|
||||
void finish() override {
|
||||
flush();
|
||||
|
@ -249,7 +249,7 @@ struct XzCompressionSink : CompressionSink {
|
|||
strm.avail_out = sizeof(outbuf);
|
||||
}
|
||||
|
||||
~XzCompressionSink() { lzma_end(&strm); }
|
||||
~XzCompressionSink() override { lzma_end(&strm); }
|
||||
|
||||
void finish() override {
|
||||
CompressionSink::flush();
|
||||
|
@ -295,7 +295,7 @@ struct BzipCompressionSink : ChunkedCompressionSink {
|
|||
strm.avail_out = sizeof(outbuf);
|
||||
}
|
||||
|
||||
~BzipCompressionSink() { BZ2_bzCompressEnd(&strm); }
|
||||
~BzipCompressionSink() override { BZ2_bzCompressEnd(&strm); }
|
||||
|
||||
void finish() override {
|
||||
flush();
|
||||
|
@ -340,7 +340,7 @@ struct BrotliCompressionSink : ChunkedCompressionSink {
|
|||
}
|
||||
}
|
||||
|
||||
~BrotliCompressionSink() { BrotliEncoderDestroyInstance(state); }
|
||||
~BrotliCompressionSink() override { BrotliEncoderDestroyInstance(state); }
|
||||
|
||||
void finish() override {
|
||||
flush();
|
||||
|
|
15
third_party/nix/src/libutil/config.cc
vendored
15
third_party/nix/src/libutil/config.cc
vendored
|
@ -1,6 +1,8 @@
|
|||
#define GOOGLE_STRIP_LOG 0
|
||||
#include "config.hh"
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include <glog/logging.h>
|
||||
|
||||
#include "args.hh"
|
||||
|
@ -96,7 +98,7 @@ void AbstractConfig::applyConfigFile(const Path& path) {
|
|||
line = string(line, 0, hash);
|
||||
}
|
||||
|
||||
vector<string> tokens = tokenizeString<vector<string> >(line);
|
||||
auto tokens = tokenizeString<vector<string> >(line);
|
||||
if (tokens.empty()) {
|
||||
continue;
|
||||
}
|
||||
|
@ -136,7 +138,7 @@ void AbstractConfig::applyConfigFile(const Path& path) {
|
|||
|
||||
string name = tokens[0];
|
||||
|
||||
vector<string>::iterator i = tokens.begin();
|
||||
auto i = tokens.begin();
|
||||
advance(i, 2);
|
||||
|
||||
set(name,
|
||||
|
@ -171,10 +173,11 @@ void Config::convertToArgs(Args& args, const std::string& category) {
|
|||
}
|
||||
}
|
||||
|
||||
AbstractSetting::AbstractSetting(const std::string& name,
|
||||
const std::string& description,
|
||||
const std::set<std::string>& aliases)
|
||||
: name(name), description(description), aliases(aliases) {}
|
||||
AbstractSetting::AbstractSetting(std::string name, std::string description,
|
||||
std::set<std::string> aliases)
|
||||
: name(std::move(name)),
|
||||
description(std::move(description)),
|
||||
aliases(std::move(aliases)) {}
|
||||
|
||||
void AbstractSetting::toJSON(JSONPlaceholder& out) { out.write(to_string()); }
|
||||
|
||||
|
|
4
third_party/nix/src/libutil/config.hh
vendored
4
third_party/nix/src/libutil/config.hh
vendored
|
@ -103,8 +103,8 @@ class AbstractSetting {
|
|||
bool overriden = false;
|
||||
|
||||
protected:
|
||||
AbstractSetting(const std::string& name, const std::string& description,
|
||||
const std::set<std::string>& aliases);
|
||||
AbstractSetting(std::string name, std::string description,
|
||||
std::set<std::string> aliases);
|
||||
|
||||
virtual ~AbstractSetting() {
|
||||
// Check against a gcc miscompilation causing our constructor
|
||||
|
|
5
third_party/nix/src/libutil/serialise.cc
vendored
5
third_party/nix/src/libutil/serialise.cc
vendored
|
@ -4,6 +4,7 @@
|
|||
#include <cerrno>
|
||||
#include <cstring>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
|
||||
#include "glog/logging.h"
|
||||
#include "util.hh"
|
||||
|
@ -159,7 +160,7 @@ size_t StringSource::read(unsigned char* data, size_t len) {
|
|||
std::unique_ptr<Source> sinkToSource(std::function<void(Sink&)> fun,
|
||||
std::function<void()> eof) {
|
||||
struct SinkToSource : Source {
|
||||
typedef boost::coroutines2::coroutine<std::string> coro_t;
|
||||
using coro_t = boost::coroutines2::coroutine<std::string>;
|
||||
|
||||
std::function<void(Sink&)> fun;
|
||||
std::function<void()> eof;
|
||||
|
@ -167,7 +168,7 @@ std::unique_ptr<Source> sinkToSource(std::function<void(Sink&)> fun,
|
|||
bool started = false;
|
||||
|
||||
SinkToSource(std::function<void(Sink&)> fun, std::function<void()> eof)
|
||||
: fun(fun), eof(eof) {}
|
||||
: fun(std::move(fun)), eof(std::move(eof)) {}
|
||||
|
||||
std::string cur;
|
||||
size_t pos = 0;
|
||||
|
|
24
third_party/nix/src/libutil/util.cc
vendored
24
third_party/nix/src/libutil/util.cc
vendored
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <cctype>
|
||||
#include <cerrno>
|
||||
#include <climits>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
@ -9,10 +10,10 @@
|
|||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <thread>
|
||||
#include <utility>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <grp.h>
|
||||
#include <limits.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -122,7 +123,7 @@ Path canonPath(const Path& path, bool resolveSymlinks) {
|
|||
arbitrary (but high) limit to prevent infinite loops. */
|
||||
unsigned int followCount = 0, maxFollow = 1024;
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
/* Skip slashes. */
|
||||
while (i != end && *i == '/') {
|
||||
i++;
|
||||
|
@ -354,7 +355,7 @@ void writeFile(const Path& path, Source& source, mode_t mode) {
|
|||
|
||||
string readLine(int fd) {
|
||||
string s;
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
char ch;
|
||||
// FIXME: inefficient
|
||||
|
@ -446,7 +447,7 @@ Path createTempDir(const Path& tmpRoot, const Path& prefix, bool includePid,
|
|||
int localCounter = 0;
|
||||
int& counter(useGlobalCounter ? globalCounter : localCounter);
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
Path tmpDir = tempName(tmpRoot, prefix, includePid, counter);
|
||||
if (mkdir(tmpDir.c_str(), mode) == 0) {
|
||||
|
@ -515,8 +516,7 @@ Path getConfigDir() {
|
|||
std::vector<Path> getConfigDirs() {
|
||||
Path configHome = getConfigDir();
|
||||
string configDirs = getEnv("XDG_CONFIG_DIRS");
|
||||
std::vector<Path> result =
|
||||
tokenizeString<std::vector<string>>(configDirs, ":");
|
||||
auto result = tokenizeString<std::vector<string>>(configDirs, ":");
|
||||
result.insert(result.begin(), configHome);
|
||||
return result;
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ void drainFD(int fd, Sink& sink, bool block) {
|
|||
}
|
||||
|
||||
std::vector<unsigned char> buf(64 * 1024);
|
||||
while (1) {
|
||||
while (true) {
|
||||
checkInterrupt();
|
||||
ssize_t rd = read(fd, buf.data(), buf.size());
|
||||
if (rd == -1) {
|
||||
|
@ -670,7 +670,7 @@ void drainFD(int fd, Sink& sink, bool block) {
|
|||
|
||||
AutoDelete::AutoDelete() : del{false} {}
|
||||
|
||||
AutoDelete::AutoDelete(const string& p, bool recursive) : path(p) {
|
||||
AutoDelete::AutoDelete(string p, bool recursive) : path(std::move(p)) {
|
||||
del = true;
|
||||
this->recursive = recursive;
|
||||
}
|
||||
|
@ -759,7 +759,7 @@ void Pipe::create() {
|
|||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
Pid::Pid() {}
|
||||
Pid::Pid() = default;
|
||||
|
||||
Pid::Pid(pid_t pid) : pid(pid) {}
|
||||
|
||||
|
@ -802,7 +802,7 @@ int Pid::kill() {
|
|||
|
||||
int Pid::wait() {
|
||||
assert(pid != -1);
|
||||
while (1) {
|
||||
while (true) {
|
||||
int status;
|
||||
int res = waitpid(pid, &status, 0);
|
||||
if (res == pid) {
|
||||
|
@ -939,7 +939,7 @@ std::vector<char*> stringsToCharPtrs(const Strings& ss) {
|
|||
for (auto& s : ss) {
|
||||
res.push_back((char*)s.c_str());
|
||||
}
|
||||
res.push_back(0);
|
||||
res.push_back(nullptr);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
@ -1031,7 +1031,7 @@ void runProgram2(const RunOptions& options) {
|
|||
throw SysError("setgid failed");
|
||||
}
|
||||
/* Drop all other groups if we're setgid. */
|
||||
if (options.gid && setgroups(0, 0) == -1) {
|
||||
if (options.gid && setgroups(0, nullptr) == -1) {
|
||||
throw SysError("setgroups failed");
|
||||
}
|
||||
if (options.uid && setuid(*options.uid) == -1) {
|
||||
|
|
2
third_party/nix/src/libutil/util.hh
vendored
2
third_party/nix/src/libutil/util.hh
vendored
|
@ -173,7 +173,7 @@ class AutoDelete {
|
|||
|
||||
public:
|
||||
AutoDelete();
|
||||
AutoDelete(const Path& p, bool recursive = true);
|
||||
AutoDelete(Path p, bool recursive = true);
|
||||
~AutoDelete();
|
||||
void cancel();
|
||||
void reset(const Path& p, bool recursive = true);
|
||||
|
|
5
third_party/nix/src/libutil/xml-writer.cc
vendored
5
third_party/nix/src/libutil/xml-writer.cc
vendored
|
@ -1,6 +1,6 @@
|
|||
#include "xml-writer.hh"
|
||||
|
||||
#include <assert.h>
|
||||
#include <cassert>
|
||||
|
||||
namespace nix {
|
||||
|
||||
|
@ -68,8 +68,7 @@ void XMLWriter::writeEmptyElement(const string& name, const XMLAttrs& attrs) {
|
|||
void XMLWriter::writeAttrs(const XMLAttrs& attrs) {
|
||||
for (auto& i : attrs) {
|
||||
output << " " << i.first << "=\"";
|
||||
for (size_t j = 0; j < i.second.size(); ++j) {
|
||||
char c = i.second[j];
|
||||
for (char c : i.second) {
|
||||
if (c == '"') {
|
||||
output << """;
|
||||
} else if (c == '<') {
|
||||
|
|
2
third_party/nix/src/nix-build/nix-build.cc
vendored
2
third_party/nix/src/nix-build/nix-build.cc
vendored
|
@ -118,7 +118,7 @@ static void _main(int argc, char** argv) {
|
|||
lines.pop_front();
|
||||
inShebang = true;
|
||||
for (int i = 2; i < argc; ++i) {
|
||||
savedArgs.push_back(argv[i]);
|
||||
savedArgs.emplace_back(argv[i]);
|
||||
}
|
||||
args.clear();
|
||||
for (auto line : lines) {
|
||||
|
|
|
@ -60,27 +60,27 @@ static int _main(int argc, char** argv) {
|
|||
|
||||
GCOptions options;
|
||||
|
||||
parseCmdLine(
|
||||
argc, argv, [&](Strings::iterator& arg, const Strings::iterator& end) {
|
||||
if (*arg == "--help") {
|
||||
showManPage("nix-collect-garbage");
|
||||
} else if (*arg == "--version") {
|
||||
printVersion("nix-collect-garbage");
|
||||
} else if (*arg == "--delete-old" || *arg == "-d") {
|
||||
removeOld = true;
|
||||
} else if (*arg == "--delete-older-than") {
|
||||
removeOld = true;
|
||||
deleteOlderThan = getArg(*arg, arg, end);
|
||||
} else if (*arg == "--dry-run") {
|
||||
dryRun = true;
|
||||
} else if (*arg == "--max-freed") {
|
||||
long long maxFreed = getIntArg<long long>(*arg, arg, end, true);
|
||||
options.maxFreed = maxFreed >= 0 ? maxFreed : 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
parseCmdLine(argc, argv,
|
||||
[&](Strings::iterator& arg, const Strings::iterator& end) {
|
||||
if (*arg == "--help") {
|
||||
showManPage("nix-collect-garbage");
|
||||
} else if (*arg == "--version") {
|
||||
printVersion("nix-collect-garbage");
|
||||
} else if (*arg == "--delete-old" || *arg == "-d") {
|
||||
removeOld = true;
|
||||
} else if (*arg == "--delete-older-than") {
|
||||
removeOld = true;
|
||||
deleteOlderThan = getArg(*arg, arg, end);
|
||||
} else if (*arg == "--dry-run") {
|
||||
dryRun = true;
|
||||
} else if (*arg == "--max-freed") {
|
||||
auto maxFreed = getIntArg<long long>(*arg, arg, end, true);
|
||||
options.maxFreed = maxFreed >= 0 ? maxFreed : 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
initPlugins();
|
||||
|
||||
|
|
47
third_party/nix/src/nix-daemon/nix-daemon.cc
vendored
47
third_party/nix/src/nix-daemon/nix-daemon.cc
vendored
|
@ -1,13 +1,13 @@
|
|||
#include <algorithm>
|
||||
#include <cerrno>
|
||||
#include <climits>
|
||||
#include <csignal>
|
||||
#include <cstring>
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <glog/logging.h>
|
||||
#include <grp.h>
|
||||
#include <limits.h>
|
||||
#include <pwd.h>
|
||||
#include <signal.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -74,7 +74,8 @@ struct TunnelLogger {
|
|||
|
||||
unsigned int clientVersion;
|
||||
|
||||
explicit TunnelLogger(unsigned int clientVersion) : clientVersion(clientVersion) {}
|
||||
explicit TunnelLogger(unsigned int clientVersion)
|
||||
: clientVersion(clientVersion) {}
|
||||
|
||||
void enqueueMsg(const std::string& s) {
|
||||
auto state(state_.lock());
|
||||
|
@ -152,7 +153,7 @@ struct TunnelLogger {
|
|||
struct TunnelSink : Sink {
|
||||
Sink& to;
|
||||
explicit TunnelSink(Sink& to) : to(to) {}
|
||||
virtual void operator()(const unsigned char* data, size_t len) {
|
||||
void operator()(const unsigned char* data, size_t len) override {
|
||||
to << STDERR_WRITE;
|
||||
writeString(data, len, to);
|
||||
}
|
||||
|
@ -177,18 +178,18 @@ struct TunnelSource : BufferedSource {
|
|||
/* If the NAR archive contains a single file at top-level, then save
|
||||
the contents of the file to `s'. Otherwise barf. */
|
||||
struct RetrieveRegularNARSink : ParseSink {
|
||||
bool regular;
|
||||
bool regular{true};
|
||||
string s;
|
||||
|
||||
RetrieveRegularNARSink() : regular(true) {}
|
||||
RetrieveRegularNARSink() {}
|
||||
|
||||
void createDirectory(const Path& path) { regular = false; }
|
||||
void createDirectory(const Path& path) override { regular = false; }
|
||||
|
||||
void receiveContents(unsigned char* data, unsigned int len) {
|
||||
void receiveContents(unsigned char* data, unsigned int len) override {
|
||||
s.append((const char*)data, len);
|
||||
}
|
||||
|
||||
void createSymlink(const Path& path, const string& target) {
|
||||
void createSymlink(const Path& path, const string& target) override {
|
||||
regular = false;
|
||||
}
|
||||
};
|
||||
|
@ -213,7 +214,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
}
|
||||
|
||||
case wopQueryValidPaths: {
|
||||
PathSet paths = readStorePaths<PathSet>(*store, from);
|
||||
auto paths = readStorePaths<PathSet>(*store, from);
|
||||
logger->startWork();
|
||||
PathSet res = store->queryValidPaths(paths);
|
||||
logger->stopWork();
|
||||
|
@ -231,7 +232,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
}
|
||||
|
||||
case wopQuerySubstitutablePaths: {
|
||||
PathSet paths = readStorePaths<PathSet>(*store, from);
|
||||
auto paths = readStorePaths<PathSet>(*store, from);
|
||||
logger->startWork();
|
||||
PathSet res = store->querySubstitutablePaths(paths);
|
||||
logger->stopWork();
|
||||
|
@ -343,7 +344,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
case wopAddTextToStore: {
|
||||
string suffix = readString(from);
|
||||
string s = readString(from);
|
||||
PathSet refs = readStorePaths<PathSet>(*store, from);
|
||||
auto refs = readStorePaths<PathSet>(*store, from);
|
||||
logger->startWork();
|
||||
Path path = store->addTextToStore(suffix, s, refs, NoRepair);
|
||||
logger->stopWork();
|
||||
|
@ -373,7 +374,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
}
|
||||
|
||||
case wopBuildPaths: {
|
||||
PathSet drvs = readStorePaths<PathSet>(*store, from);
|
||||
auto drvs = readStorePaths<PathSet>(*store, from);
|
||||
BuildMode mode = bmNormal;
|
||||
if (GET_PROTOCOL_MINOR(clientVersion) >= 15) {
|
||||
mode = (BuildMode)readInt(from);
|
||||
|
@ -397,7 +398,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
Path drvPath = readStorePath(*store, from);
|
||||
BasicDerivation drv;
|
||||
readDerivation(from, *store, drv);
|
||||
BuildMode buildMode = (BuildMode)readInt(from);
|
||||
auto buildMode = (BuildMode)readInt(from);
|
||||
logger->startWork();
|
||||
if (!trusted) {
|
||||
throw Error("you are not privileged to build derivations");
|
||||
|
@ -570,7 +571,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
SubstitutablePathInfos infos;
|
||||
store->querySubstitutablePathInfos({path}, infos);
|
||||
logger->stopWork();
|
||||
SubstitutablePathInfos::iterator i = infos.find(path);
|
||||
auto i = infos.find(path);
|
||||
if (i == infos.end()) {
|
||||
to << 0;
|
||||
} else {
|
||||
|
@ -581,7 +582,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
}
|
||||
|
||||
case wopQuerySubstitutablePathInfos: {
|
||||
PathSet paths = readStorePaths<PathSet>(*store, from);
|
||||
auto paths = readStorePaths<PathSet>(*store, from);
|
||||
logger->startWork();
|
||||
SubstitutablePathInfos infos;
|
||||
store->querySubstitutablePathInfos(paths, infos);
|
||||
|
@ -652,7 +653,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
|
||||
case wopAddSignatures: {
|
||||
Path path = readStorePath(*store, from);
|
||||
StringSet sigs = readStrings<StringSet>(from);
|
||||
auto sigs = readStrings<StringSet>(from);
|
||||
logger->startWork();
|
||||
if (!trusted) {
|
||||
throw Error("you are not privileged to add signatures");
|
||||
|
@ -713,7 +714,7 @@ static void performOp(TunnelLogger* logger, ref<Store> store, bool trusted,
|
|||
}
|
||||
|
||||
case wopQueryMissing: {
|
||||
PathSet targets = readStorePaths<PathSet>(*store, from);
|
||||
auto targets = readStorePaths<PathSet>(*store, from);
|
||||
logger->startWork();
|
||||
PathSet willBuild, willSubstitute, unknown;
|
||||
unsigned long long downloadSize, narSize;
|
||||
|
@ -834,7 +835,7 @@ static void sigChldHandler(int sigNo) {
|
|||
// Ensure we don't modify errno of whatever we've interrupted
|
||||
auto saved_errno = errno;
|
||||
/* Reap all dead children. */
|
||||
while (waitpid(-1, 0, WNOHANG) > 0) {
|
||||
while (waitpid(-1, nullptr, WNOHANG) > 0) {
|
||||
;
|
||||
}
|
||||
errno = saved_errno;
|
||||
|
@ -991,7 +992,7 @@ static void daemonLoop(char** argv) {
|
|||
closeOnExec(fdSocket.get());
|
||||
|
||||
/* Loop accepting connections. */
|
||||
while (1) {
|
||||
while (true) {
|
||||
try {
|
||||
/* Accept a connection. */
|
||||
struct sockaddr_un remoteAddr;
|
||||
|
@ -1012,10 +1013,10 @@ static void daemonLoop(char** argv) {
|
|||
bool trusted = false;
|
||||
PeerInfo peer = getPeerInfo(remote.get());
|
||||
|
||||
struct passwd* pw = peer.uidKnown ? getpwuid(peer.uid) : 0;
|
||||
struct passwd* pw = peer.uidKnown ? getpwuid(peer.uid) : nullptr;
|
||||
string user = pw ? pw->pw_name : std::to_string(peer.uid);
|
||||
|
||||
struct group* gr = peer.gidKnown ? getgrgid(peer.gid) : 0;
|
||||
struct group* gr = peer.gidKnown ? getgrgid(peer.gid) : nullptr;
|
||||
string group = gr ? gr->gr_name : std::to_string(peer.gid);
|
||||
|
||||
Strings trustedUsers = settings.trustedUsers;
|
||||
|
|
23
third_party/nix/src/nix-env/nix-env.cc
vendored
23
third_party/nix/src/nix-env/nix-env.cc
vendored
|
@ -57,7 +57,7 @@ struct Globals {
|
|||
bool prebuiltOnly;
|
||||
};
|
||||
|
||||
typedef void (*Operation)(Globals& globals, Strings opFlags, Strings opArgs);
|
||||
using Operation = void (*)(Globals&, Strings, Strings);
|
||||
|
||||
static string needArg(Strings::iterator& i, Strings& args, const string& arg) {
|
||||
if (i == args.end()) {
|
||||
|
@ -234,8 +234,7 @@ static DrvInfos filterBySelector(EvalState& state, const DrvInfos& allElems,
|
|||
typedef list<std::pair<DrvInfo, unsigned int> > Matches;
|
||||
Matches matches;
|
||||
unsigned int n = 0;
|
||||
for (DrvInfos::const_iterator j = allElems.begin(); j != allElems.end();
|
||||
++j, ++n) {
|
||||
for (auto j = allElems.begin(); j != allElems.end(); ++j, ++n) {
|
||||
DrvName drvName(j->queryName());
|
||||
if (i.matches(drvName)) {
|
||||
i.hits++;
|
||||
|
@ -260,7 +259,7 @@ static DrvInfos filterBySelector(EvalState& state, const DrvInfos& allElems,
|
|||
DrvName drvName(j.first.queryName());
|
||||
long d = 1;
|
||||
|
||||
Newest::iterator k = newest.find(drvName.name);
|
||||
auto k = newest.find(drvName.name);
|
||||
|
||||
if (k != newest.end()) {
|
||||
d = j.first.querySystem() == k->second.first.querySystem()
|
||||
|
@ -499,7 +498,7 @@ static void installDerivations(Globals& globals, const Strings& args,
|
|||
}
|
||||
|
||||
static void opInstall(Globals& globals, Strings opFlags, Strings opArgs) {
|
||||
for (Strings::iterator i = opFlags.begin(); i != opFlags.end();) {
|
||||
for (auto i = opFlags.begin(); i != opFlags.end();) {
|
||||
string arg = *i++;
|
||||
if (parseInstallSourceOptions(globals, i, opFlags, arg)) {
|
||||
;
|
||||
|
@ -554,7 +553,7 @@ static void upgradeDerivations(Globals& globals, const Strings& args,
|
|||
priority. If there are still multiple matches,
|
||||
take the one with the highest version.
|
||||
Do not upgrade if it would decrease the priority. */
|
||||
DrvInfos::iterator bestElem = availElems.end();
|
||||
auto bestElem = availElems.end();
|
||||
string bestVersion;
|
||||
for (auto j = availElems.begin(); j != availElems.end(); ++j) {
|
||||
if (comparePriorities(*globals.state, i, *j) > 0) {
|
||||
|
@ -617,7 +616,7 @@ static void upgradeDerivations(Globals& globals, const Strings& args,
|
|||
|
||||
static void opUpgrade(Globals& globals, Strings opFlags, Strings opArgs) {
|
||||
UpgradeType upgradeType = utLt;
|
||||
for (Strings::iterator i = opFlags.begin(); i != opFlags.end();) {
|
||||
for (auto i = opFlags.begin(); i != opFlags.end();) {
|
||||
string arg = *i++;
|
||||
if (parseInstallSourceOptions(globals, i, opFlags, arg)) {
|
||||
;
|
||||
|
@ -652,7 +651,7 @@ static void opSetFlag(Globals& globals, Strings opFlags, Strings opArgs) {
|
|||
throw UsageError("not enough arguments to '--set-flag'");
|
||||
}
|
||||
|
||||
Strings::iterator arg = opArgs.begin();
|
||||
auto arg = opArgs.begin();
|
||||
string flagName = *arg++;
|
||||
string flagValue = *arg++;
|
||||
DrvNames selectors = drvNamesFromArgs(Strings(arg, opArgs.end()));
|
||||
|
@ -691,7 +690,7 @@ static void opSet(Globals& globals, Strings opFlags, Strings opArgs) {
|
|||
throw Error("--set is not supported for this Nix store");
|
||||
}
|
||||
|
||||
for (Strings::iterator i = opFlags.begin(); i != opFlags.end();) {
|
||||
for (auto i = opFlags.begin(); i != opFlags.end();) {
|
||||
string arg = *i++;
|
||||
if (parseInstallSourceOptions(globals, i, opFlags, arg)) {
|
||||
;
|
||||
|
@ -790,7 +789,7 @@ static bool cmpElemByName(const DrvInfo& a, const DrvInfo& b) {
|
|||
b_name.end(), cmpChars);
|
||||
}
|
||||
|
||||
typedef list<Strings> Table;
|
||||
using Table = list<Strings>;
|
||||
|
||||
void printTable(Table& table) {
|
||||
auto nrColumns = table.size() > 0 ? table.front().size() : 0;
|
||||
|
@ -911,7 +910,7 @@ static void opQuery(Globals& globals, Strings opFlags, Strings opArgs) {
|
|||
|
||||
settings.readOnlyMode = true; /* makes evaluation a bit faster */
|
||||
|
||||
for (Strings::iterator i = opFlags.begin(); i != opFlags.end();) {
|
||||
for (auto i = opFlags.begin(); i != opFlags.end();) {
|
||||
string arg = *i++;
|
||||
if (arg == "--status" || arg == "-s") {
|
||||
printStatus = true;
|
||||
|
@ -1392,7 +1391,7 @@ static void opVersion(Globals& globals, Strings opFlags, Strings opArgs) {
|
|||
static int _main(int argc, char** argv) {
|
||||
{
|
||||
Strings opFlags, opArgs;
|
||||
Operation op = 0;
|
||||
Operation op = nullptr;
|
||||
RepairFlag repair = NoRepair;
|
||||
string file;
|
||||
|
||||
|
|
23
third_party/nix/src/nix-store/nix-store.cc
vendored
23
third_party/nix/src/nix-store/nix-store.cc
vendored
|
@ -28,7 +28,7 @@ using namespace nix;
|
|||
using std::cin;
|
||||
using std::cout;
|
||||
|
||||
typedef void (*Operation)(Strings opFlags, Strings opArgs);
|
||||
using Operation = void (*)(Strings, Strings);
|
||||
|
||||
static Path gcRoot;
|
||||
static int rootNr = 0;
|
||||
|
@ -77,7 +77,7 @@ static PathSet realisePath(Path path, bool build = true) {
|
|||
|
||||
PathSet outputs;
|
||||
for (auto& j : p.second) {
|
||||
DerivationOutputs::iterator i = drv.outputs.find(j);
|
||||
auto i = drv.outputs.find(j);
|
||||
if (i == drv.outputs.end()) {
|
||||
throw Error(
|
||||
format("derivation '%1%' does not have an output named '%2%'") %
|
||||
|
@ -246,7 +246,7 @@ static void opPrintFixedPath(Strings opFlags, Strings opArgs) {
|
|||
throw UsageError(format("'--print-fixed-path' requires three arguments"));
|
||||
}
|
||||
|
||||
Strings::iterator i = opArgs.begin();
|
||||
auto i = opArgs.begin();
|
||||
HashType hashAlgo = parseHashType(*i++);
|
||||
string hash = *i++;
|
||||
string name = *i++;
|
||||
|
@ -427,8 +427,7 @@ static void opQuery(Strings opFlags, Strings opArgs) {
|
|||
}
|
||||
}
|
||||
Paths sorted = store->topoSortPaths(paths);
|
||||
for (Paths::reverse_iterator i = sorted.rbegin(); i != sorted.rend();
|
||||
++i) {
|
||||
for (auto i = sorted.rbegin(); i != sorted.rend(); ++i) {
|
||||
cout << format("%s\n") % *i;
|
||||
}
|
||||
break;
|
||||
|
@ -446,7 +445,7 @@ static void opQuery(Strings opFlags, Strings opArgs) {
|
|||
for (auto& i : opArgs) {
|
||||
Path path = useDeriver(store->followLinksToStorePath(i));
|
||||
Derivation drv = store->derivationFromPath(path);
|
||||
StringPairs::iterator j = drv.env.find(bindingName);
|
||||
auto j = drv.env.find(bindingName);
|
||||
if (j == drv.env.end()) {
|
||||
throw Error(
|
||||
format(
|
||||
|
@ -607,7 +606,7 @@ static void registerValidity(bool reregister, bool hashGiven,
|
|||
bool canonicalise) {
|
||||
ValidPathInfos infos;
|
||||
|
||||
while (1) {
|
||||
while (true) {
|
||||
ValidPathInfo info = decodeValidPathInfo(cin, hashGiven);
|
||||
if (info.path == "") {
|
||||
break;
|
||||
|
@ -701,7 +700,7 @@ static void opGC(Strings opFlags, Strings opArgs) {
|
|||
} else if (*i == "--delete") {
|
||||
options.action = GCOptions::gcDeleteDead;
|
||||
} else if (*i == "--max-freed") {
|
||||
long long maxFreed = getIntArg<long long>(*i, i, opFlags.end(), true);
|
||||
auto maxFreed = getIntArg<long long>(*i, i, opFlags.end(), true);
|
||||
options.maxFreed = maxFreed >= 0 ? maxFreed : 0;
|
||||
} else {
|
||||
throw UsageError(format("bad sub-operation '%1%' in GC") % *i);
|
||||
|
@ -966,7 +965,7 @@ static void opServe(Strings opFlags, Strings opArgs) {
|
|||
case cmdQueryValidPaths: {
|
||||
bool lock = readInt(in);
|
||||
bool substitute = readInt(in);
|
||||
PathSet paths = readStorePaths<PathSet>(*store, in);
|
||||
auto paths = readStorePaths<PathSet>(*store, in);
|
||||
if (lock && writeAllowed) {
|
||||
for (auto& path : paths) {
|
||||
store->addTempRoot(path);
|
||||
|
@ -1004,7 +1003,7 @@ static void opServe(Strings opFlags, Strings opArgs) {
|
|||
}
|
||||
|
||||
case cmdQueryPathInfos: {
|
||||
PathSet paths = readStorePaths<PathSet>(*store, in);
|
||||
auto paths = readStorePaths<PathSet>(*store, in);
|
||||
// !!! Maybe we want a queryPathInfos?
|
||||
for (auto& i : paths) {
|
||||
try {
|
||||
|
@ -1048,7 +1047,7 @@ static void opServe(Strings opFlags, Strings opArgs) {
|
|||
if (!writeAllowed) {
|
||||
throw Error("building paths is not allowed");
|
||||
}
|
||||
PathSet paths = readStorePaths<PathSet>(*store, in);
|
||||
auto paths = readStorePaths<PathSet>(*store, in);
|
||||
|
||||
getBuildSettings();
|
||||
|
||||
|
@ -1186,7 +1185,7 @@ static void opVersion(Strings opFlags, Strings opArgs) {
|
|||
static int _main(int argc, char** argv) {
|
||||
{
|
||||
Strings opFlags, opArgs;
|
||||
Operation op = 0;
|
||||
Operation op = nullptr;
|
||||
|
||||
parseCmdLine(argc, argv,
|
||||
[&](Strings::iterator& arg, const Strings::iterator& end) {
|
||||
|
|
9
third_party/nix/src/nix/command.cc
vendored
9
third_party/nix/src/nix/command.cc
vendored
|
@ -1,11 +1,13 @@
|
|||
#include "command.hh"
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "derivations.hh"
|
||||
#include "store-api.hh"
|
||||
|
||||
namespace nix {
|
||||
|
||||
Commands* RegisterCommand::commands = 0;
|
||||
Commands* RegisterCommand::commands = nullptr;
|
||||
|
||||
void Command::printHelp(const string& programName, std::ostream& out) {
|
||||
Args::printHelp(programName, out);
|
||||
|
@ -22,7 +24,8 @@ void Command::printHelp(const string& programName, std::ostream& out) {
|
|||
}
|
||||
}
|
||||
|
||||
MultiCommand::MultiCommand(const Commands& _commands) : commands(_commands) {
|
||||
MultiCommand::MultiCommand(Commands _commands)
|
||||
: commands(std::move(_commands)) {
|
||||
expectedArgs.push_back(ExpectedArg{
|
||||
"command", 1, true, [=](std::vector<std::string> ss) {
|
||||
assert(!command);
|
||||
|
@ -82,7 +85,7 @@ bool MultiCommand::processArgs(const Strings& args, bool finish) {
|
|||
}
|
||||
}
|
||||
|
||||
StoreCommand::StoreCommand() {}
|
||||
StoreCommand::StoreCommand() = default;
|
||||
|
||||
ref<Store> StoreCommand::getStore() {
|
||||
if (!_store) {
|
||||
|
|
2
third_party/nix/src/nix/command.hh
vendored
2
third_party/nix/src/nix/command.hh
vendored
|
@ -149,7 +149,7 @@ class MultiCommand : virtual Args {
|
|||
|
||||
std::shared_ptr<Command> command;
|
||||
|
||||
MultiCommand(const Commands& commands);
|
||||
MultiCommand(Commands commands);
|
||||
|
||||
void printHelp(const string& programName, std::ostream& out) override;
|
||||
|
||||
|
|
12
third_party/nix/src/nix/installables.cc
vendored
12
third_party/nix/src/nix/installables.cc
vendored
|
@ -1,4 +1,5 @@
|
|||
#include <regex>
|
||||
#include <utility>
|
||||
|
||||
#include "attr-path.hh"
|
||||
#include "command.hh"
|
||||
|
@ -100,7 +101,8 @@ Buildable Installable::toBuildable() {
|
|||
struct InstallableStorePath : Installable {
|
||||
Path storePath;
|
||||
|
||||
explicit InstallableStorePath(const Path& storePath) : storePath(storePath) {}
|
||||
explicit InstallableStorePath(Path storePath)
|
||||
: storePath(std::move(storePath)) {}
|
||||
|
||||
std::string what() override { return storePath; }
|
||||
|
||||
|
@ -160,8 +162,8 @@ struct InstallableValue : Installable {
|
|||
struct InstallableExpr : InstallableValue {
|
||||
std::string text;
|
||||
|
||||
InstallableExpr(SourceExprCommand& cmd, const std::string& text)
|
||||
: InstallableValue(cmd), text(text) {}
|
||||
InstallableExpr(SourceExprCommand& cmd, std::string text)
|
||||
: InstallableValue(cmd), text(std::move(text)) {}
|
||||
|
||||
std::string what() override { return text; }
|
||||
|
||||
|
@ -175,8 +177,8 @@ struct InstallableExpr : InstallableValue {
|
|||
struct InstallableAttrPath : InstallableValue {
|
||||
std::string attrPath;
|
||||
|
||||
InstallableAttrPath(SourceExprCommand& cmd, const std::string& attrPath)
|
||||
: InstallableValue(cmd), attrPath(attrPath) {}
|
||||
InstallableAttrPath(SourceExprCommand& cmd, std::string attrPath)
|
||||
: InstallableValue(cmd), attrPath(std::move(attrPath)) {}
|
||||
|
||||
std::string what() override { return attrPath; }
|
||||
|
||||
|
|
2
third_party/nix/src/nix/legacy.cc
vendored
2
third_party/nix/src/nix/legacy.cc
vendored
|
@ -2,6 +2,6 @@
|
|||
|
||||
namespace nix {
|
||||
|
||||
RegisterLegacyCommand::Commands* RegisterLegacyCommand::commands = 0;
|
||||
RegisterLegacyCommand::Commands* RegisterLegacyCommand::commands = nullptr;
|
||||
|
||||
}
|
||||
|
|
2
third_party/nix/src/nix/log.cc
vendored
2
third_party/nix/src/nix/log.cc
vendored
|
@ -8,7 +8,7 @@
|
|||
using namespace nix;
|
||||
|
||||
struct CmdLog : InstallableCommand {
|
||||
CmdLog() {}
|
||||
CmdLog() = default;
|
||||
|
||||
std::string name() override { return "log"; }
|
||||
|
||||
|
|
2
third_party/nix/src/nix/main.cc
vendored
2
third_party/nix/src/nix/main.cc
vendored
|
@ -179,7 +179,7 @@ void mainWrapped(int argc, char** argv) {
|
|||
} // namespace nix
|
||||
|
||||
int main(int argc, char* argv[]) {
|
||||
FLAGS_logtostderr = 1;
|
||||
FLAGS_logtostderr = true;
|
||||
google::InitGoogleLogging(argv[0]);
|
||||
|
||||
return nix::handleExceptions(argv[0],
|
||||
|
|
2
third_party/nix/src/nix/optimise-store.cc
vendored
2
third_party/nix/src/nix/optimise-store.cc
vendored
|
@ -7,7 +7,7 @@
|
|||
using namespace nix;
|
||||
|
||||
struct CmdOptimiseStore : StoreCommand {
|
||||
CmdOptimiseStore() {}
|
||||
CmdOptimiseStore() = default;
|
||||
|
||||
std::string name() override { return "optimise-store"; }
|
||||
|
||||
|
|
8
third_party/nix/src/nix/repl.cc
vendored
8
third_party/nix/src/nix/repl.cc
vendored
|
@ -1,10 +1,10 @@
|
|||
#include <climits>
|
||||
#include <csetjmp>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <iostream>
|
||||
|
||||
#include <glog/logging.h>
|
||||
#include <setjmp.h>
|
||||
|
||||
#ifdef READLINE
|
||||
#include <readline/history.h>
|
||||
|
@ -73,7 +73,7 @@ struct NixRepl {
|
|||
Expr* parseString(string s);
|
||||
void evalString(string s, Value& v);
|
||||
|
||||
typedef set<Value*> ValuesSeen;
|
||||
using ValuesSeen = set<Value*>;
|
||||
std::ostream& printValue(std::ostream& str, Value& v, unsigned int maxDepth);
|
||||
std::ostream& printValue(std::ostream& str, Value& v, unsigned int maxDepth,
|
||||
ValuesSeen& seen);
|
||||
|
@ -306,7 +306,7 @@ bool NixRepl::getLine(string& input, const std::string& prompt) {
|
|||
throw SysError("restoring signals");
|
||||
}
|
||||
|
||||
if (sigaction(SIGINT, &old, 0)) {
|
||||
if (sigaction(SIGINT, &old, nullptr)) {
|
||||
throw SysError("restoring handler for SIGINT");
|
||||
}
|
||||
};
|
||||
|
@ -358,7 +358,7 @@ StringSet NixRepl::completePrefix(string prefix) {
|
|||
}
|
||||
} else if ((dot = cur.rfind('.')) == string::npos) {
|
||||
/* This is a variable name; look it up in the current scope. */
|
||||
StringSet::iterator i = varNames.lower_bound(cur);
|
||||
auto i = varNames.lower_bound(cur);
|
||||
while (i != varNames.end()) {
|
||||
if (string(*i, 0, cur.size()) != cur) {
|
||||
break;
|
||||
|
|
11
third_party/nix/src/nix/run.cc
vendored
11
third_party/nix/src/nix/run.cc
vendored
|
@ -225,7 +225,7 @@ void chrootHelper(int argc, char** argv) {
|
|||
createDirs(tmpDir + storeDir);
|
||||
|
||||
if (mount(realStoreDir.c_str(), (tmpDir + storeDir).c_str(), "", MS_BIND,
|
||||
0) == -1) {
|
||||
nullptr) == -1) {
|
||||
throw SysError("mounting '%s' on '%s'", realStoreDir, storeDir);
|
||||
}
|
||||
|
||||
|
@ -242,12 +242,13 @@ void chrootHelper(int argc, char** argv) {
|
|||
if (mkdir(dst.c_str(), 0700) == -1) {
|
||||
throw SysError("creating directory '%s'", dst);
|
||||
}
|
||||
if (mount(src.c_str(), dst.c_str(), "", MS_BIND | MS_REC, 0) == -1) {
|
||||
if (mount(src.c_str(), dst.c_str(), "", MS_BIND | MS_REC, nullptr) ==
|
||||
-1) {
|
||||
throw SysError("mounting '%s' on '%s'", src, dst);
|
||||
}
|
||||
}
|
||||
|
||||
char* cwd = getcwd(0, 0);
|
||||
char* cwd = getcwd(nullptr, 0);
|
||||
if (!cwd) {
|
||||
throw SysError("getting current directory");
|
||||
}
|
||||
|
@ -260,8 +261,8 @@ void chrootHelper(int argc, char** argv) {
|
|||
if (chdir(cwd) == -1) {
|
||||
throw SysError(format("chdir to '%s' in chroot") % cwd);
|
||||
}
|
||||
} else if (mount(realStoreDir.c_str(), storeDir.c_str(), "", MS_BIND, 0) ==
|
||||
-1) {
|
||||
} else if (mount(realStoreDir.c_str(), storeDir.c_str(), "", MS_BIND,
|
||||
nullptr) == -1) {
|
||||
throw SysError("mounting '%s' on '%s'", realStoreDir, storeDir);
|
||||
}
|
||||
|
||||
|
|
5
third_party/nix/src/nix/search.cc
vendored
5
third_party/nix/src/nix/search.cc
vendored
|
@ -76,15 +76,14 @@ struct CmdSearch : SourceExprCommand, MixJSON {
|
|||
// Use "^" here instead of ".*" due to differences in resulting highlighting
|
||||
// (see #1893 -- libc++ claims empty search string is not in POSIX grammar)
|
||||
if (res.empty()) {
|
||||
res.push_back("^");
|
||||
res.emplace_back("^");
|
||||
}
|
||||
|
||||
std::vector<std::regex> regexes;
|
||||
regexes.reserve(res.size());
|
||||
|
||||
for (auto& re : res) {
|
||||
regexes.push_back(
|
||||
std::regex(re, std::regex::extended | std::regex::icase));
|
||||
regexes.emplace_back(re, std::regex::extended | std::regex::icase);
|
||||
}
|
||||
|
||||
auto state = getEvalState();
|
||||
|
|
2
third_party/nix/src/nix/show-config.cc
vendored
2
third_party/nix/src/nix/show-config.cc
vendored
|
@ -7,7 +7,7 @@
|
|||
using namespace nix;
|
||||
|
||||
struct CmdShowConfig : Command, MixJSON {
|
||||
CmdShowConfig() {}
|
||||
CmdShowConfig() = default;
|
||||
|
||||
std::string name() override { return "show-config"; }
|
||||
|
||||
|
|
Loading…
Reference in a new issue