2006-01-17 14:22:03 +01:00
|
|
|
#include <u.h>
|
|
|
|
#include <libc.h>
|
2006-01-17 13:37:52 +01:00
|
|
|
#include "fmtdef.h"
|
2005-08-08 14:50:13 +02:00
|
|
|
|
|
|
|
int
|
|
|
|
sprint(char *buf, char *fmt, ...)
|
|
|
|
{
|
|
|
|
int n;
|
2006-01-17 13:37:52 +01:00
|
|
|
uint len;
|
2005-08-08 14:50:13 +02:00
|
|
|
va_list args;
|
|
|
|
|
2006-01-17 13:37:52 +01:00
|
|
|
len = 1<<30; /* big number, but sprint is deprecated anyway */
|
|
|
|
/*
|
|
|
|
* on PowerPC, the stack is near the top of memory, so
|
|
|
|
* we must be sure not to overflow a 32-bit pointer.
|
|
|
|
*/
|
|
|
|
if(buf+len < buf)
|
|
|
|
len = -(uintptr)buf-1;
|
|
|
|
|
2005-08-08 14:50:13 +02:00
|
|
|
va_start(args, fmt);
|
2006-01-17 13:37:52 +01:00
|
|
|
n = vsnprint(buf, len, fmt, args);
|
2005-08-08 14:50:13 +02:00
|
|
|
va_end(args);
|
|
|
|
return n;
|
|
|
|
}
|