check against plan 9

This commit is contained in:
rsc 2004-12-28 19:25:16 +00:00
parent 727facb605
commit 4dd07e012c
4 changed files with 19 additions and 22 deletions

View file

@ -26,6 +26,7 @@ loop:
i = read(bp->fid, bp->bbuf, bp->bsize); i = read(bp->fid, bp->bbuf, bp->bsize);
bp->gbuf = bp->bbuf; bp->gbuf = bp->bbuf;
if(i <= 0) { if(i <= 0) {
bp->state = Bracteof;
if(i < 0) if(i < 0)
bp->state = Binactive; bp->state = Binactive;
return Beof; return Beof;

View file

@ -61,7 +61,7 @@ Binits(Biobuf *bp, int f, int mode, unsigned char *p, int size)
p += Bungetsize; /* make room for Bungets */ p += Bungetsize; /* make room for Bungets */
size -= Bungetsize; size -= Bungetsize;
switch(mode) { switch(mode&~(OCEXEC|ORCLOSE|OTRUNC)) {
default: default:
fprint(2, "Bopen: unknown mode %d\n", mode); fprint(2, "Bopen: unknown mode %d\n", mode);
return Beof; return Beof;
@ -86,7 +86,7 @@ Binits(Biobuf *bp, int f, int mode, unsigned char *p, int size)
bp->flag = 0; bp->flag = 0;
bp->rdline = 0; bp->rdline = 0;
bp->offset = 0; bp->offset = 0;
/* bp->runesize = 0; */ bp->runesize = 0;
return 0; return 0;
} }
@ -116,7 +116,7 @@ Bopen(char *name, int mode)
Biobuf *bp; Biobuf *bp;
int f; int f;
switch(mode) { switch(mode&~(OCEXEC|ORCLOSE|OTRUNC)) {
default: default:
fprint(2, "Bopen: unknown mode %d\n", mode); fprint(2, "Bopen: unknown mode %d\n", mode);
return 0; return 0;

View file

@ -4,26 +4,17 @@
int int
Bputc(Biobuf *bp, int c) Bputc(Biobuf *bp, int c)
{ {
int i, j; int i;
loop: for(;;) {
i = bp->ocount; i = bp->ocount;
j = i+1; if(i) {
if(i != 0) { bp->ebuf[i++] = c;
bp->ocount = j; bp->ocount = i;
bp->ebuf[i] = c;
return 0; return 0;
} }
if(bp->state != Bwactive) if(Bflush(bp) == Beof)
return Beof; break;
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; return Beof;
} }

View file

@ -9,6 +9,11 @@
#define OREAD O_RDONLY #define OREAD O_RDONLY
#define OWRITE O_WRONLY #define OWRITE O_WRONLY
#define OCEXEC 0
#define ORCLOSE 0
#define OTRUNC 0
#define nil ((void*)0) #define nil ((void*)0)
typedef long long vlong; typedef long long vlong;