diff options
| author | Byron Rakitzis <byron@archone.tamu.edu> | 1994-03-07 00:00:01 +0000 |
|---|---|---|
| committer | Toby Goodwin <toby@paccrat.org> | 2015-05-16 21:22:09 +0100 |
| commit | a076248389c82276e079756bee26c011b03f70f2 (patch) | |
| tree | 9d22c48c75bcd778f30cbb2e37b6dff6abb4f1d2 /print.c | |
| parent | 6bb38f6a01dbf4bbd584e038ceace0a00faa27bb (diff) | |
beta: rc-1.5betadev1
Diffstat (limited to 'print.c')
| -rw-r--r-- | print.c | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -270,9 +270,11 @@ extern int printfmt(Format *format, const char *fmt) { extern int fmtprint(Format *format, const char *fmt,...) { int n = -format->flushed; - va_list saveargs = format->args; + va_list ap, saveargs; - va_start(format->args, fmt); + va_start(ap, fmt); + saveargs = format->args; + format->args = ap; n += printfmt(format, fmt); va_end(format->args); format->args = saveargs; @@ -292,6 +294,7 @@ static void fprint_flush(Format *format, SIZE_T more) { extern int fprint(int fd, const char *fmt,...) { char buf[1024]; Format format; + va_list ap; format.buf = buf; format.bufbegin = buf; @@ -300,7 +303,8 @@ extern int fprint(int fd, const char *fmt,...) { format.flushed = 0; format.u.n = fd; - va_start(format.args, fmt); + va_start(ap, fmt); + format.args = ap; printfmt(&format, fmt); va_end(format.args); @@ -340,8 +344,11 @@ static char *memprint(Format *format, const char *fmt, char *buf, SIZE_T len) { extern char *mprint(const char *fmt,...) { Format format; char *result; + va_list ap; + format.u.n = 1; - va_start(format.args, fmt); + va_start(ap, fmt); + format.args = ap; result = memprint(&format, fmt, ealloc(PRINT_ALLOCSIZE), PRINT_ALLOCSIZE); va_end(format.args); return result; @@ -350,8 +357,11 @@ extern char *mprint(const char *fmt,...) { extern char *nprint(const char *fmt,...) { Format format; char *result; + va_list ap; + format.u.n = 0; - va_start(format.args, fmt); + va_start(ap, fmt); + format.args = ap; result = memprint(&format, fmt, nalloc(PRINT_ALLOCSIZE), PRINT_ALLOCSIZE); va_end(format.args); return result; |