diff --git a/src/libstore/builtins/buildenv.cc b/src/libstore/builtins/buildenv.cc index 0ff0be3aa..22ed8d807 100644 --- a/src/libstore/builtins/buildenv.cc +++ b/src/libstore/builtins/buildenv.cc @@ -10,12 +10,16 @@ namespace nix { +namespace { + struct State { std::map priorities; unsigned long symlinks = 0; }; +} // namespace + /* For each activated package, create symlinks */ static void createLinks(State & state, const Path & srcDir, const Path & dstDir, int priority) { diff --git a/src/libutil/args.cc b/src/libutil/args.cc index 2e6d85afd..f4309473b 100644 --- a/src/libutil/args.cc +++ b/src/libutil/args.cc @@ -81,6 +81,8 @@ std::optional RootArgs::needsCompletion(std::string_view s) return {}; } +namespace { + /** * Basically this is `typedef std::optional Parser(std::string_view s, Strings & r);` * @@ -246,6 +248,8 @@ void ParseQuoted::operator()(std::shared_ptr & state, Strings & r) assert(false); } +} // namespace + Strings parseShebangContent(std::string_view s) { Strings result; diff --git a/src/libutil/hash.cc b/src/libutil/hash.cc index a5ac9b654..03003c689 100644 --- a/src/libutil/hash.cc +++ b/src/libutil/hash.cc @@ -258,7 +258,7 @@ Hash newHashAllowEmpty(std::string_view hashStr, std::optional ha return Hash::parseAny(hashStr, ha); } -union Ctx +union Hash::Ctx { blake3_hasher blake3; MD5_CTX md5; @@ -267,7 +267,7 @@ union Ctx SHA512_CTX sha512; }; -static void start(HashAlgorithm ha, Ctx & ctx) +static void start(HashAlgorithm ha, Hash::Ctx & ctx) { if (ha == HashAlgorithm::BLAKE3) blake3_hasher_init(&ctx.blake3); @@ -302,7 +302,7 @@ void blake3_hasher_update_with_heuristics(blake3_hasher * blake3, std::string_vi } } -static void update(HashAlgorithm ha, Ctx & ctx, std::string_view data) +static void update(HashAlgorithm ha, Hash::Ctx & ctx, std::string_view data) { if (ha == HashAlgorithm::BLAKE3) blake3_hasher_update_with_heuristics(&ctx.blake3, data); @@ -316,7 +316,7 @@ static void update(HashAlgorithm ha, Ctx & ctx, std::string_view data) SHA512_Update(&ctx.sha512, data.data(), data.size()); } -static void finish(HashAlgorithm ha, Ctx & ctx, unsigned char * hash) +static void finish(HashAlgorithm ha, Hash::Ctx & ctx, unsigned char * hash) { if (ha == HashAlgorithm::BLAKE3) blake3_hasher_finalize(&ctx.blake3, hash, BLAKE3_OUT_LEN); @@ -332,7 +332,7 @@ static void finish(HashAlgorithm ha, Ctx & ctx, unsigned char * hash) Hash hashString(HashAlgorithm ha, std::string_view s, const ExperimentalFeatureSettings & xpSettings) { - Ctx ctx; + Hash::Ctx ctx; Hash hash(ha, xpSettings); start(ha, ctx); update(ha, ctx, s); @@ -350,7 +350,7 @@ Hash hashFile(HashAlgorithm ha, const Path & path) HashSink::HashSink(HashAlgorithm ha) : ha(ha) { - ctx = new Ctx; + ctx = new Hash::Ctx; bytes = 0; start(ha, *ctx); } @@ -378,7 +378,7 @@ HashResult HashSink::finish() HashResult HashSink::currentHash() { flush(); - Ctx ctx2 = *ctx; + Hash::Ctx ctx2 = *ctx; Hash hash(ha); nix::finish(ha, ctx2, hash.hash); return HashResult(hash, bytes); diff --git a/src/libutil/include/nix/util/hash.hh b/src/libutil/include/nix/util/hash.hh index 48f1b0c3c..7b76095cf 100644 --- a/src/libutil/include/nix/util/hash.hh +++ b/src/libutil/include/nix/util/hash.hh @@ -55,6 +55,9 @@ extern const StringSet hashFormats; struct Hash { + /** Opaque handle type for the hash calculation state. */ + union Ctx; + constexpr static size_t maxHashSize = 64; size_t hashSize = 0; uint8_t hash[maxHashSize] = {}; @@ -222,8 +225,6 @@ std::optional parseHashAlgoOpt(std::string_view s); */ std::string_view printHashAlgo(HashAlgorithm ha); -union Ctx; - struct AbstractHashSink : virtual Sink { virtual HashResult finish() = 0; @@ -233,7 +234,7 @@ class HashSink : public BufferedSink, public AbstractHashSink { private: HashAlgorithm ha; - Ctx * ctx; + Hash::Ctx * ctx; uint64_t bytes; public: diff --git a/src/nix/diff-closures.cc b/src/nix/diff-closures.cc index 020c3e13b..cbf842e5c 100644 --- a/src/nix/diff-closures.cc +++ b/src/nix/diff-closures.cc @@ -10,11 +10,15 @@ namespace nix { +namespace { + struct Info { std::string outputName; }; +} // namespace + // name -> version -> store paths typedef std::map>> GroupedPaths;