65 lines
1.1 KiB
C
65 lines
1.1 KiB
C
|
#include "Xos.h"
|
||
|
#include "os.h"
|
||
|
#include <stdarg.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
char *
|
||
|
Xvprintf(const char *format, va_list va)
|
||
|
{
|
||
|
char *ret;
|
||
|
int size;
|
||
|
va_list va2;
|
||
|
|
||
|
va_copy(va2, va);
|
||
|
size = vsnprintf(NULL, 0, format, va2);
|
||
|
va_end(va2);
|
||
|
|
||
|
ret = (char *)Xalloc(size + 1);
|
||
|
if (ret == NULL)
|
||
|
return NULL;
|
||
|
|
||
|
vsnprintf(ret, size + 1, format, va);
|
||
|
ret[size] = 0;
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
char *Xprintf(const char *format, ...)
|
||
|
{
|
||
|
char *ret;
|
||
|
va_list va;
|
||
|
va_start(va, format);
|
||
|
ret = Xvprintf(format, va);
|
||
|
va_end(va);
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
char *
|
||
|
XNFvprintf(const char *format, va_list va)
|
||
|
{
|
||
|
char *ret;
|
||
|
int size;
|
||
|
va_list va2;
|
||
|
|
||
|
va_copy(va2, va);
|
||
|
size = vsnprintf(NULL, 0, format, va2);
|
||
|
va_end(va2);
|
||
|
|
||
|
ret = (char *)XNFalloc(size + 1);
|
||
|
if (ret == NULL)
|
||
|
return NULL;
|
||
|
|
||
|
vsnprintf(ret, size + 1, format, va);
|
||
|
ret[size] = 0;
|
||
|
return ret;
|
||
|
}
|
||
|
|
||
|
char *XNFprintf(const char *format, ...)
|
||
|
{
|
||
|
char *ret;
|
||
|
va_list va;
|
||
|
va_start(va, format);
|
||
|
ret = XNFvprintf(format, va);
|
||
|
va_end(va);
|
||
|
return ret;
|
||
|
}
|