5 static char *putstr(char *d
, char *s
)
12 static int digits(unsigned long n
, int base
)
20 static char *digs
= "0123456789abcdef";
22 static char *putint(char *s
, unsigned long n
, int base
, int sign
)
26 if (sign
&& n
& 0x80000000) {
31 for (i
= 0; i
< d
; i
++) {
32 s
[d
- i
- 1] = digs
[n
% base
];
38 int vsprintf(char *dst
, char *fmt
, va_list ap
)
50 d
= putint(d
, va_arg(ap
, long), 10, 1);
53 d
= putint(d
, va_arg(ap
, long), 10, 0);
56 d
= putint(d
, va_arg(ap
, long), 16, 0);
59 *d
++ = va_arg(ap
, int);
62 d
= putstr(d
, va_arg(ap
, char *));
75 static char buf
[1 << 12];
77 int printf(char *fmt
, ...)
82 ret
= vsprintf(buf
, fmt
, ap
);
84 return write(1, buf
, ret
);
87 int sprintf(char *dst
, char *fmt
, ...)
92 ret
= vsprintf(dst
, fmt
, ap
);