aboutsummaryrefslogtreecommitdiff
path: root/src/libbio/bputc.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-12-28 19:25:16 +0000
committerrsc <devnull@localhost>2004-12-28 19:25:16 +0000
commit4dd07e012c124921328df5d91c272c63e015bdd5 (patch)
treefa8300981dfb26e1f90c4152deae106cfd65aa03 /src/libbio/bputc.c
parent727facb60539f522635f0d8978435ce4680fecd6 (diff)
downloadplan9port-4dd07e012c124921328df5d91c272c63e015bdd5.tar.gz
plan9port-4dd07e012c124921328df5d91c272c63e015bdd5.tar.bz2
plan9port-4dd07e012c124921328df5d91c272c63e015bdd5.zip
check against plan 9
Diffstat (limited to 'src/libbio/bputc.c')
-rw-r--r--src/libbio/bputc.c29
1 files changed, 10 insertions, 19 deletions
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;
}