18ccd4a63SDavid du Colombier #include <u.h>
28ccd4a63SDavid du Colombier #include <libc.h>
30d601874SDavid du Colombier #include "fmtdef.h"
48ccd4a63SDavid du Colombier
58ccd4a63SDavid du Colombier int
sprint(char * buf,char * fmt,...)68ccd4a63SDavid du Colombier sprint(char *buf, char *fmt, ...)
78ccd4a63SDavid du Colombier {
88ccd4a63SDavid du Colombier int n;
90d601874SDavid du Colombier uint len;
108ccd4a63SDavid du Colombier va_list args;
118ccd4a63SDavid du Colombier
120d601874SDavid du Colombier len = 1<<30; /* big number, but sprint is deprecated anyway */
130d601874SDavid du Colombier /*
140d601874SDavid du Colombier * on PowerPC, the stack is near the top of memory, so
150d601874SDavid du Colombier * we must be sure not to overflow a 32-bit pointer.
160d601874SDavid du Colombier */
17*96cbc34fSDavid du Colombier if((uintptr)buf+len < (uintptr)buf)
180d601874SDavid du Colombier len = -(uintptr)buf-1;
190d601874SDavid du Colombier
208ccd4a63SDavid du Colombier va_start(args, fmt);
210d601874SDavid du Colombier n = vsnprint(buf, len, fmt, args);
228ccd4a63SDavid du Colombier va_end(args);
238ccd4a63SDavid du Colombier return n;
248ccd4a63SDavid du Colombier }
25