Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include "os_specific.h"
00018
00019 #ifdef WINDOWS
00020
00021 int vasprintf(char** strp, const char* fmt, va_list ap)
00022 {
00023 int n;
00024 int size = 100;
00025 char* p;
00026 char* np;
00027
00028 if ((p = (char*)malloc(size * sizeof(char))) == NULL)
00029 return -1;
00030
00031 while (1) {
00032 #ifdef _MSC_VER
00033 n = vsnprintf_s(p, size, size - 1, fmt, ap);
00034 #else
00035 n = vsnprintf(p, size, fmt, ap);
00036 #endif
00037 if (n > -1 && n < size) {
00038 *strp = p;
00039 return n;
00040 }
00041 if (n > -1)
00042 size = n+1;
00043 else
00044 size *= 2;
00045 if ((np = (char*)realloc (p, size * sizeof(char))) == NULL) {
00046 free(p);
00047 return -1;
00048 } else
00049 p = np;
00050 }
00051 }
00052
00053
00054 #endif