authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-11-17 15:50:20+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-11-19 01:42:45+01:00
log8817fc8958468cdbef10294c66324108f165d14f
tree70cc8d6af018357aa0c3dbd37d7383398718c94e
parentacfb88e9a51944260cdeb12811fc18709c629e2c
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

incr-check: read/write messages as little endian


1 files changed, 13 insertions(+), 8 deletions(-)

tools/incr-check.zig+13-8
...@@ -290,9 +290,8 @@ const Eval = struct {...@@ -290,9 +290,8 @@ const Eval = struct {
290 return;290 return;
291 },291 },
292 .emit_digest => {292 .emit_digest => {
293 const EbpHdr = std.zig.Server.Message.EmitDigest;293 var r: std.Io.Reader = .fixed(body);
294 const ebp_hdr = @as(*align(1) const EbpHdr, @ptrCast(body));294 _ = r.takeStruct(std.zig.Server.Message.EmitDigest, .little) catch unreachable;
295 _ = ebp_hdr;
296 if (stderr.bufferedLen() > 0) {295 if (stderr.bufferedLen() > 0) {
297 const stderr_data = try poller.toOwnedSlice(.stderr);296 const stderr_data = try poller.toOwnedSlice(.stderr);
298 if (eval.allow_stderr) {297 if (eval.allow_stderr) {
...@@ -307,7 +306,7 @@ const Eval = struct {...@@ -307,7 +306,7 @@ const Eval = struct {
307 // This message indicates the end of the update.306 // This message indicates the end of the update.
308 }307 }
309308
310 const digest = body[@sizeOf(EbpHdr)..][0..Cache.bin_digest_len];309 const digest = r.takeArray(Cache.bin_digest_len) catch unreachable;
311 const result_dir = ".local-cache" ++ std.fs.path.sep_str ++ "o" ++ std.fs.path.sep_str ++ Cache.binToHex(digest.*);310 const result_dir = ".local-cache" ++ std.fs.path.sep_str ++ "o" ++ std.fs.path.sep_str ++ Cache.binToHex(digest.*);
312311
313 const bin_name = try std.zig.EmitArtifact.bin.cacheName(arena, .{312 const bin_name = try std.zig.EmitArtifact.bin.cacheName(arena, .{
...@@ -519,7 +518,10 @@ const Eval = struct {...@@ -519,7 +518,10 @@ const Eval = struct {
519 .tag = .update,518 .tag = .update,
520 .bytes_len = 0,519 .bytes_len = 0,
521 };520 };
522 try eval.child.stdin.?.writeAll(std.mem.asBytes(&header));521 var w = eval.child.stdin.?.writer(&.{});
522 w.interface.writeStruct(header, .little) catch |err| switch (err) {
523 error.WriteFailed => return w.err.?,
524 };
523 }525 }
524526
525 fn end(eval: *Eval, poller: *Poller) !void {527 fn end(eval: *Eval, poller: *Poller) !void {
...@@ -836,9 +838,12 @@ fn requestExit(child: *std.process.Child, eval: *Eval) void {...@@ -836,9 +838,12 @@ fn requestExit(child: *std.process.Child, eval: *Eval) void {
836 .tag = .exit,838 .tag = .exit,
837 .bytes_len = 0,839 .bytes_len = 0,
838 };840 };
839 child.stdin.?.writeAll(std.mem.asBytes(&header)) catch |err| switch (err) {841 var w = eval.child.stdin.?.writer(&.{});
840 error.BrokenPipe => {},842 w.interface.writeStruct(header, .little) catch |err| switch (err) {
841 else => eval.fatal("failed to send exit: {s}", .{@errorName(err)}),843 error.WriteFailed => switch (w.err.?) {
844 error.BrokenPipe => {},
845 else => |e| eval.fatal("failed to send exit: {s}", .{@errorName(e)}),
846 },
842 };847 };
843848
844 // Send EOF to stdin.849 // Send EOF to stdin.