Index: include/lldb/Host/windows/win32.h =================================================================== --- include/lldb/Host/windows/win32.h +++ include/lldb/Host/windows/win32.h @@ -52,7 +52,7 @@ #ifdef LLDB_DISABLE_PYTHON typedef uint32_t pid_t; -#endif +#endif // LLDB_DISABLE_PYTHON int usleep(uint32_t useconds); @@ -63,6 +63,7 @@ int strcasecmp(const char* s1, const char* s2); int strncasecmp(const char* s1, const char* s2, size_t n); +int snprintf(char *buffer, size_t count, const char *format, ...); #define STDIN_FILENO 0 #define STDOUT_FILENO 1 @@ -73,8 +74,7 @@ #define S_IFDIR _S_IFDIR #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) -#define snprintf _snprintf -#endif +#endif // _MSC_VER // timespec struct timespec Index: source/Host/windows/Windows.cpp =================================================================== --- source/Host/windows/Windows.cpp +++ source/Host/windows/Windows.cpp @@ -198,8 +198,27 @@ int usleep(uint32_t useconds) { - Sleep(useconds / 1000); - return 0; + Sleep(useconds / 1000); + return 0; +} + +int snprintf(char *buffer, size_t count, const char *format, ...) +{ + int old_errno = errno; + va_list argptr; + va_start(argptr, format); + int r = vsnprintf(buffer, count, format, argptr); + int new_errno = errno; + buffer[count-1] = '\0'; + if (r == -1 || r == count) + { + FILE *nul = fopen("nul", "w"); + r = vfprintf(nul, format, argptr); + fclose(nul); + errno = r < count ? new_errno : old_errno; + } + va_end(argptr); + return errno ? -1 : r; } #endif // _MSC_VER