diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-30 14:05:41 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:17 -0300 |
| commit | 30bfe8143c5e3840275880d77e9765cf94910ee1 (patch) | |
| tree | 8a7ea443d84145b70f0f9d3d70264db314017a62 /src | |
| parent | a7d5422132d3b1ae00948e53314747814bb5814d (diff) | |
| download | pardes-30bfe8143c5e3840275880d77e9765cf94910ee1.tar.gz pardes-30bfe8143c5e3840275880d77e9765cf94910ee1.zip | |
A tag write over the limit is refused "no space: over 4096 bytes", so its err record says tag: once
The refusal's text began with "tag: ", and the log's err record puts the
file's name before the reason. So the record read `err - col/1/tag: tag:
no space: over 4096 bytes`. The text is now the reason alone, as the
control-character refusal's is, and the record names the file once.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'src')
| -rw-r--r-- | src/ninep/cols.zig | 5 | ||||
| -rw-r--r-- | src/ninep/pane.zig | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/ninep/cols.zig b/src/ninep/cols.zig index 24fb590c..9185a2bc 100644 --- a/src/ninep/cols.zig +++ b/src/ninep/cols.zig @@ -500,7 +500,10 @@ test "a refused write after a truncation leaves every kind of tag as it was, and const h = th.call(p, .{ .tag = 2, .op = .open, .node = node, .omode = 1 }).reply.handle; const r = th.call(p, .{ .tag = 3, .op = .write, .node = node, .handle = h, .data = big }); try testing.expectEqual(E.NOSPC, r.errno()); - try testing.expectEqualStrings("tag: no space: over 4096 bytes", r.reply.ename); + try testing.expectEqualStrings("no space: over 4096 bytes", r.reply.ename); + // Its err record names the file once: `tag: no space`, never `tag: tag:`. + try testing.expect(th.logHas(p, "tag: no space: over 4096 bytes")); + try testing.expect(!th.logHas(p, "tag: tag:")); _ = th.call(p, .{ .tag = 4, .op = .release, .node = node, .handle = h, .opened = true }); try testing.expectEqualStrings(before, th.rd(p, node, 0, 1 << 16).bytes); // A control character is refused the same way on every kind. diff --git a/src/ninep/pane.zig b/src/ninep/pane.zig index de7f7cd4..dc8b4b10 100644 --- a/src/ninep/pane.zig +++ b/src/ninep/pane.zig @@ -639,7 +639,7 @@ pub fn tagFault(data: []const u8) ?[]const u8 { /// A tag write's limit, the same for a pane's, a column's and the /// workspace's: whole or not at all. -pub const e_tag_over = std.fmt.comptimePrint("tag: no space: over {d} bytes", .{limits.max_tag_tail}); +pub const e_tag_over = std.fmt.comptimePrint("no space: over {d} bytes", .{limits.max_tag_tail}); fn writeTag(p: *Pardes, req: Req, pane: *Pane) Reply { if (req.data.len == 0) return .{ .tag = req.tag, .written = 0 }; @@ -1314,7 +1314,7 @@ test "a tag write past the limit is refused whole, naming the limit" { try testing.expectEqual(E.NOSPC, r.errno()); // `no space` is what 9ns maps to ENOSPC, so a shell through a mount // sees the errno the tree gives. - try testing.expect(std.mem.startsWith(u8, r.reply.ename, "tag: no space: over ")); + try testing.expect(std.mem.startsWith(u8, r.reply.ename, "no space: over ")); try testing.expectEqualStrings(before, rd(p, tag, 0, 1 << 16).bytes); } |
