From 4dd07e012c124921328df5d91c272c63e015bdd5 Mon Sep 17 00:00:00 2001 From: rsc Date: Tue, 28 Dec 2004 19:25:16 +0000 Subject: check against plan 9 --- src/libbio/bputc.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) (limited to 'src/libbio/bputc.c') diff --git a/src/libbio/bputc.c b/src/libbio/bputc.c index 5f0fba59..d05badaa 100644 --- a/src/libbio/bputc.c +++ b/src/libbio/bputc.c @@ -4,26 +4,17 @@ int Bputc(Biobuf *bp, int c) { - int i, j; + int i; -loop: - i = bp->ocount; - j = i+1; - if(i != 0) { - bp->ocount = j; - bp->ebuf[i] = c; - return 0; + for(;;) { + i = bp->ocount; + if(i) { + bp->ebuf[i++] = c; + bp->ocount = i; + return 0; + } + if(Bflush(bp) == Beof) + break; } - if(bp->state != Bwactive) - return Beof; - j = write(bp->fid, bp->bbuf, bp->bsize); - if(j == bp->bsize) { - bp->ocount = -bp->bsize; - bp->offset += j; - goto loop; - } - fprint(2, "Bputc: write error\n"); - bp->state = Binactive; - bp->ocount = 0; return Beof; } -- cgit v1.2.3