std.Build.Cache: add binToHex function

reduces need for API users to rely on formatted printing, even though
that's how it is currently implemented.
This commit is contained in:
Andrew Kelley 2024-07-04 14:15:15 -07:00
parent 29512f0edd
commit 7ed2fbd755

View file

@ -250,7 +250,19 @@ pub const HashHelper = struct {
pub fn final(hh: *HashHelper) HexDigest { pub fn final(hh: *HashHelper) HexDigest {
var bin_digest: BinDigest = undefined; var bin_digest: BinDigest = undefined;
hh.hasher.final(&bin_digest); hh.hasher.final(&bin_digest);
return binToHex(bin_digest);
}
pub fn oneShot(bytes: []const u8) [hex_digest_len]u8 {
var hasher: Hasher = hasher_init;
hasher.update(bytes);
var bin_digest: BinDigest = undefined;
hasher.final(&bin_digest);
return binToHex(bin_digest);
}
};
pub fn binToHex(bin_digest: BinDigest) HexDigest {
var out_digest: HexDigest = undefined; var out_digest: HexDigest = undefined;
_ = fmt.bufPrint( _ = fmt.bufPrint(
&out_digest, &out_digest,
@ -260,21 +272,6 @@ pub const HashHelper = struct {
return out_digest; return out_digest;
} }
pub fn oneShot(bytes: []const u8) [hex_digest_len]u8 {
var hasher: Hasher = hasher_init;
hasher.update(bytes);
var bin_digest: BinDigest = undefined;
hasher.final(&bin_digest);
var out_digest: [hex_digest_len]u8 = undefined;
_ = fmt.bufPrint(
&out_digest,
"{s}",
.{fmt.fmtSliceHexLower(&bin_digest)},
) catch unreachable;
return out_digest;
}
};
pub const Lock = struct { pub const Lock = struct {
manifest_file: fs.File, manifest_file: fs.File,
@ -426,11 +423,7 @@ pub const Manifest = struct {
var bin_digest: BinDigest = undefined; var bin_digest: BinDigest = undefined;
self.hash.hasher.final(&bin_digest); self.hash.hasher.final(&bin_digest);
_ = fmt.bufPrint( self.hex_digest = binToHex(bin_digest);
&self.hex_digest,
"{s}",
.{fmt.fmtSliceHexLower(&bin_digest)},
) catch unreachable;
self.hash.hasher = hasher_init; self.hash.hasher = hasher_init;
self.hash.hasher.update(&bin_digest); self.hash.hasher.update(&bin_digest);
@ -899,14 +892,7 @@ pub const Manifest = struct {
var bin_digest: BinDigest = undefined; var bin_digest: BinDigest = undefined;
self.hash.hasher.final(&bin_digest); self.hash.hasher.final(&bin_digest);
var out_digest: HexDigest = undefined; return binToHex(bin_digest);
_ = fmt.bufPrint(
&out_digest,
"{s}",
.{fmt.fmtSliceHexLower(&bin_digest)},
) catch unreachable;
return out_digest;
} }
/// If `want_shared_lock` is true, this function automatically downgrades the /// If `want_shared_lock` is true, this function automatically downgrades the