summaryrefslogtreecommitdiff
path: root/appl/lib/chanfill.b
diff options
context:
space:
mode:
Diffstat (limited to 'appl/lib/chanfill.b')
-rw-r--r--appl/lib/chanfill.b34
1 files changed, 15 insertions, 19 deletions
diff --git a/appl/lib/chanfill.b b/appl/lib/chanfill.b
index 7e7d2685..6f326ea6 100644
--- a/appl/lib/chanfill.b
+++ b/appl/lib/chanfill.b
@@ -32,25 +32,21 @@ init(data: array of byte, f: int, c: Sys->Rwrite, r: ref Sys->FileIO, b: Bufio):
fill(b: ref Iobuf): int
{
for (;;) {
- alt {
- (nil, data, f, c) := <-fio.write =>
- if (f != fid) {
- if (c != nil)
- c <-= (0, "file busy");
- continue;
- }
- if (c == nil)
- return Bufio->EOF;
- c <-= (len data, nil);
- i := len data;
- if (i == 0)
- continue;
- b.buffer[b.size:] = data;
- b.size += i;
- b.filpos += big i;
- return i;
- * =>
- return Bufio->EOF;
+ (nil, data, f, c) := <-fio.write;
+ if (f != fid) {
+ if (c != nil)
+ c <-= (0, "file busy");
+ continue;
}
+ if (c == nil)
+ return Bufio->EOF;
+ c <-= (len data, nil);
+ i := len data;
+ if (i == 0)
+ continue;
+ b.buffer[b.size:] = data;
+ b.size += i;
+ b.filpos += big i;
+ return i;
}
}