29 lines
454 B
C
29 lines
454 B
C
|
|
#include "lib9.h"
|
||
|
|
#include <bio.h>
|
||
|
|
|
||
|
|
int
|
||
|
|
Bprint(Biobuf *bp, char *fmt, ...)
|
||
|
|
{
|
||
|
|
va_list ap;
|
||
|
|
char *ip, *ep, *out;
|
||
|
|
int n;
|
||
|
|
|
||
|
|
ep = (char*)bp->ebuf;
|
||
|
|
ip = ep + bp->ocount;
|
||
|
|
va_start(ap, fmt);
|
||
|
|
out = vseprint(ip, ep, fmt, ap);
|
||
|
|
va_end(ap);
|
||
|
|
if(out == 0 || out >= ep-5) {
|
||
|
|
Bflush(bp);
|
||
|
|
ip = ep + bp->ocount;
|
||
|
|
va_start(ap, fmt);
|
||
|
|
out = vseprint(ip, ep, fmt, ap);
|
||
|
|
va_end(ap);
|
||
|
|
if(out >= ep-5)
|
||
|
|
return Beof;
|
||
|
|
}
|
||
|
|
n = out-ip;
|
||
|
|
bp->ocount += n;
|
||
|
|
return n;
|
||
|
|
}
|