1#ifndef WREPORT_COMPAT_H
2#define WREPORT_COMPAT_H
10#ifdef USE_OWN_VASPRINTF
11static int vasprintf(
char** result,
const char* format, va_list args)
13 const char* p = format;
16 int total_width = strlen(format) + 1;
19 memcpy((
void*)&ap, (
void*)&args,
sizeof(va_list));
25 while (strchr(
"-+ #0", *p))
30 total_width += abs(va_arg(ap,
int));
33 total_width += strtoul(p, (
char**)&p, 10);
40 total_width += abs(va_arg(ap,
int));
43 total_width += strtoul(p, (
char**)&p, 10);
45 while (strchr(
"hlL", *p))
58 case 'c': (void)va_arg(ap,
int);
break;
64 (void)va_arg(ap,
double);
69 case 's': total_width += strlen(va_arg(ap,
char*));
break;
71 case 'n': (void)va_arg(ap,
char*);
break;
76 *result = (
char*)malloc(total_width);
79 return vsprintf(*result, format, args);
86static int asprintf(
char** result,
const char* format, ...)
90 int res = vasprintf(result, format, ap);