summaryrefslogtreecommitdiff
path: root/src/ninep/pane.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/ninep/pane.zig')
-rw-r--r--src/ninep/pane.zig8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ninep/pane.zig b/src/ninep/pane.zig
index 4b34cf96..40d292c0 100644
--- a/src/ninep/pane.zig
+++ b/src/ninep/pane.zig
@@ -33,6 +33,8 @@ pub const State = struct {
addr: Range = .{},
limit: ?Range = null,
readers: u16 = 0,
+ /// One of `readers` reads `event`; a second reading open is refused.
+ event_reader: bool = false,
events: events.Queue = .{},
nomark: bool = false,
noscroll: bool = false,
@@ -221,8 +223,9 @@ pub fn fileSize(p: *Pardes, id: usize, f: PaneFile) u64 {
.look, .exec => ctl.resultsLen(p),
.event => events.pending(&pf.events),
.pty_status => pty.status_len,
+ .pty_ctl => pty.ctlLen(pane),
.pty_data => events.pending(&pf.pty_out),
- .dir, .errors, .pty, .pty_ctl => 0,
+ .dir, .errors, .pty => 0,
};
}
@@ -289,7 +292,8 @@ pub fn read(p: *Pardes, req: Req, id: usize, pane: *Pane, file: PaneFile) Reply
.event => events.readQueue(p, req, &pf.events),
.pty_status => pty.readStatus(p, req, id, pane),
.pty_data => pty.readData(p, req, pf),
- .dir, .errors, .pty, .pty_ctl => Reply.fail(req.tag, E.PERM),
+ .pty_ctl => pty.readCtl(p, req, pane),
+ .dir, .errors, .pty => Reply.fail(req.tag, E.PERM),
};
}