summaryrefslogtreecommitdiff
path: root/print.c
diff options
context:
space:
mode:
authorByron Rakitzis <byron@archone.tamu.edu>1994-03-07 00:00:01 +0000
committerToby Goodwin <toby@paccrat.org>2015-05-16 21:22:59 +0100
commit5556dde4d3ad4e34267320b1411fc090b18a24b0 (patch)
tree9d22c48c75bcd778f30cbb2e37b6dff6abb4f1d2 /print.c
parent26bb34cf036027dfa22dfae8d8fc2f6bfd6acb75 (diff)
beta: rc-1.5betadev1
Diffstat (limited to 'print.c')
-rw-r--r--print.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/print.c b/print.c
index 36fefb5..a5cf25f 100644
--- a/print.c
+++ b/print.c
@@ -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;