fix Bprint yet again

This commit is contained in:
rsc 2004-12-28 19:18:19 +00:00
parent 1369edef9f
commit 8b45564f0f
3 changed files with 7 additions and 53 deletions

View file

@ -1,41 +0,0 @@
#include "lib9.h"
#include <bio.h>
static int
_Bfmtflush(Fmt *f)
{
Biobuf *b;
b = f->farg;
b->ocount = (char*)f->to - (char*)f->stop;
if(Bflush(b) < 0)
return 0;
f->to = b->ebuf+b->ocount;
return 1;
}
int
Bfmtinit(Fmt *f, Biobuf *b)
{
if(b->state != Bwactive)
return -1;
memset(f, 0, sizeof *f);
f->farg = b;
f->start = b->bbuf;
f->to = b->ebuf+b->ocount;
f->stop = b->ebuf;
f->flush = _Bfmtflush;
return 0;
}
int
Bfmtflush(Fmt *f)
{
Biobuf *b;
b = f->farg;
if(f->to == nil)
return -1;
b->ocount = (char*)f->to - (char*)f->stop;
return f->nfmt;
}

View file

@ -4,16 +4,11 @@
int
Bprint(Biobuf *bp, char *fmt, ...)
{
va_list args;
Fmt f;
int n;
va_list arg;
if(Bfmtinit(&f, bp) < 0)
return -1;
va_start(args, fmt);
n = fmtvprint(&f, fmt, args);
va_end(args);
if(n > 0 && Bfmtflush(&f) < 0)
return -1;
va_start(arg, fmt);
n = Bvprint(bp, fmt, arg);
va_end(arg);
return n;
}

View file

@ -6,20 +6,20 @@ OFILES=\
bbuffered.$O\
bfildes.$O\
bflush.$O\
bfmt.$O\
bgetc.$O\
bgetrune.$O\
bgetd.$O\
binit.$O\
boffset.$O\
bprint.$O\
bputc.$O\
bputrune.$O\
brdline.$O\
brdstr.$O\
bread.$O\
bseek.$O\
bvprint.$O\
bwrite.$O\
bgetrune.$O\
bputrune.$O\
HFILES=\
$PLAN9/include/bio.h\