1 #include <plan9.h> 2 3 #define SIZE 4096 4 extern int printcol; 5 6 int 7 print(char *fmt, ...) 8 { 9 char buf[SIZE], *out; 10 va_list arg; 11 int n; 12 13 va_start(arg, fmt); 14 out = doprint(buf, buf+SIZE, fmt, arg); 15 va_end(arg); 16 n = write(1, buf, (long)(out-buf)); 17 return n; 18 } 19 20 int 21 fprint(int f, char *fmt, ...) 22 { 23 char buf[SIZE], *out; 24 va_list arg; 25 int n; 26 27 va_start(arg, fmt); 28 out = doprint(buf, buf+SIZE, fmt, arg); 29 va_end(arg); 30 n = write(f, buf, (long)(out-buf)); 31 return n; 32 } 33 34 int 35 sprint(char *buf, char *fmt, ...) 36 { 37 char *out; 38 va_list arg; 39 int scol; 40 41 scol = printcol; 42 va_start(arg, fmt); 43 out = doprint(buf, buf+SIZE, fmt, arg); 44 va_end(arg); 45 printcol = scol; 46 return out-buf; 47 } 48 49 int 50 snprint(char *buf, int len, char *fmt, ...) 51 { 52 char *out; 53 va_list arg; 54 int scol; 55 56 scol = printcol; 57 va_start(arg, fmt); 58 out = doprint(buf, buf+len, fmt, arg); 59 va_end(arg); 60 printcol = scol; 61 return out-buf; 62 } 63 64 char* 65 seprint(char *buf, char *e, char *fmt, ...) 66 { 67 char *out; 68 va_list arg; 69 int scol; 70 71 scol = printcol; 72 va_start(arg, fmt); 73 out = doprint(buf, e, fmt, arg); 74 va_end(arg); 75 printcol = scol; 76 return out; 77 } 78