xref: /plan9/sys/src/cmd/unix/drawterm/libc/sprint.c (revision 96cbc34f1b36a29efdcfd47b10e70703a690febc)
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