diff options
Diffstat (limited to 'third_party/nix/src/libexpr/primops/fetchMercurial.cc')
-rw-r--r-- | third_party/nix/src/libexpr/primops/fetchMercurial.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/third_party/nix/src/libexpr/primops/fetchMercurial.cc b/third_party/nix/src/libexpr/primops/fetchMercurial.cc index 05a3d66ae7ca..3ece094e6a8d 100644 --- a/third_party/nix/src/libexpr/primops/fetchMercurial.cc +++ b/third_party/nix/src/libexpr/primops/fetchMercurial.cc @@ -28,11 +28,10 @@ std::regex commitHashRegex("^[0-9a-fA-F]{40}$"); HgInfo exportMercurial(ref<Store> store, const std::string& uri, std::string rev, const std::string& name) { - if (evalSettings.pureEval && rev == "") { + if (evalSettings.pureEval && rev == "") throw Error( "in pure evaluation mode, 'fetchMercurial' requires a Mercurial " "revision"); - } if (rev == "" && absl::StartsWith(uri, "/") && pathExists(uri + "/.hg")) { bool clean = runProgram("hg", true, @@ -91,10 +90,9 @@ HgInfo exportMercurial(ref<Store> store, const std::string& uri, /* If we haven't pulled this repo less than ‘tarball-ttl’ seconds, do so now. */ time_t now = time(0); - struct stat st {}; + struct stat st; if (stat(stampFile.c_str(), &st) != 0 || - static_cast<uint64_t>(st.st_mtime) + settings.tarballTtl <= - static_cast<uint64_t>(now)) { + (uint64_t)st.st_mtime + settings.tarballTtl <= (uint64_t)now) { /* Except that if this is a commit hash that we already have, we don't have to pull again. */ if (!(std::regex_match(rev, commitHashRegex) && pathExists(cacheDir) && @@ -200,22 +198,20 @@ static void prim_fetchMercurial(EvalState& state, const Pos& pos, Value** args, for (auto& attr_iter : *args[0]->attrs) { auto& attr = attr_iter.second; std::string n(attr.name); - if (n == "url") { + if (n == "url") url = state.coerceToString(*attr.pos, *attr.value, context, false, false); - } else if (n == "rev") { + else if (n == "rev") rev = state.forceStringNoCtx(*attr.value, *attr.pos); - } else if (n == "name") { + else if (n == "name") name = state.forceStringNoCtx(*attr.value, *attr.pos); - } else { + else throw EvalError("unsupported argument '%s' to 'fetchMercurial', at %s", attr.name, *attr.pos); - } } - if (url.empty()) { + if (url.empty()) throw EvalError(format("'url' argument required, at %1%") % pos); - } } else { url = state.coerceToString(pos, *args[0], context, false, false); |