diff options
author | Nicholas Noll <nbnoll@eml.cc> | 2021-12-04 14:10:21 -0800 |
---|---|---|
committer | Nicholas Noll <nbnoll@eml.cc> | 2021-12-04 14:10:21 -0800 |
commit | 12e09f9f85ac48ff891adf92f3b2c9a5fea27273 (patch) | |
tree | 60051793885e9978dadf6672ef85cdda216676a2 /src/base/io/vprint.c | |
parent | b80a3d28ce42be4fdec451f74620b10ee75219dc (diff) |
Chore(REMOVE): finished deprecation of old io functions.
The old methods were simple wrappers of C standard library functions.
We've moved (painfully) over to a new interface that allows for files to
live on the stack. All users of the functionality are ported over.
Diffstat (limited to 'src/base/io/vprint.c')
-rw-r--r-- | src/base/io/vprint.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/base/io/vprint.c b/src/base/io/vprint.c new file mode 100644 index 0000000..6fa446e --- /dev/null +++ b/src/base/io/vprint.c @@ -0,0 +1,34 @@ +#include "internal.h" + +static int +flush(fmt·State *fmt) +{ + io·Header *io = fmt->file; + io->olen = fmt->buffer.cur - fmt->buffer.end; + if(io·flush(io)) + return 0; + + fmt->buffer.end = (char*)io->e; + fmt->buffer.cur = fmt->buffer.beg = fmt->buffer.end + io->olen; + return 1; +} + +int +io·vprint(io·Header *io, char *fmt, va_list args) +{ + int n; + fmt·State f; + + f.buffer.end = (char*)io->e; + f.buffer.beg = f.buffer.cur = (char*)(io->e + io->olen); + f.n = 0; + f.file = io; + f.flush = flush; + + va_copy(f.args,args); + n = fmt·do(&f, fmt); + va_end(f.args); + + io->olen = f.buffer.cur - f.buffer.beg; + return n; +} |