1.1 --- a/core/LibrarySys.cpp Mon Dec 22 20:12:33 2008 -0600
1.2 +++ b/core/LibrarySys.cpp Fri Dec 26 23:26:21 2008 -0500
1.3 @@ -273,20 +273,34 @@
1.4
1.5 void LibrarySystem::GetPlatformError(char *error, size_t maxlength)
1.6 {
1.7 +#if defined PLATFORM_WINDOWS
1.8 + return GetPlatformErrorEx(GetLastError(), error, maxlength);
1.9 +#elif defined PLATFORM_POSIX
1.10 + return GetPlatformErrorEx(errno, error, maxlength);
1.11 +#endif
1.12 +}
1.13 +
1.14 +void LibrarySystem::GetPlatformErrorEx(int code, char *error, size_t maxlength)
1.15 +{
1.16 if (error && maxlength)
1.17 {
1.18 #if defined PLATFORM_WINDOWS
1.19 - DWORD dw = GetLastError();
1.20 FormatMessageA(
1.21 FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
1.22 NULL,
1.23 - dw,
1.24 + (DWORD)code,
1.25 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
1.26 (LPSTR)error,
1.27 maxlength,
1.28 NULL);
1.29 +#elif defined PLATFORM_LINUX
1.30 + const char *ae = strerror_r(code, error, maxlength);
1.31 + if (ae != error)
1.32 + {
1.33 + UTIL_Format(error, maxlength, "%s", ae);
1.34 + }
1.35 #elif defined PLATFORM_POSIX
1.36 - UTIL_Format(error, maxlength, "%s", strerror(errno));
1.37 + strerror_r(code, error, maxlength);
1.38 #endif
1.39 }
1.40 }