aheinecke@252: #include "logging.h" aheinecke@252: #include "strhelp.h" aheinecke@252: aheinecke@252: #include aheinecke@252: aheinecke@252: #ifdef WIN32 aheinecke@252: char * aheinecke@252: getLastErrorMsg() aheinecke@252: { aheinecke@252: LPWSTR bufPtr = NULL; aheinecke@252: DWORD err = GetLastError(); aheinecke@252: char *retval = NULL; aheinecke@252: FormatMessageW (FORMAT_MESSAGE_ALLOCATE_BUFFER | aheinecke@252: FORMAT_MESSAGE_FROM_SYSTEM | aheinecke@252: FORMAT_MESSAGE_IGNORE_INSERTS, aheinecke@252: NULL, err, 0, (LPWSTR) &bufPtr, 0, NULL); aheinecke@252: if (!bufPtr) aheinecke@252: { aheinecke@252: HMODULE hWinhttp = GetModuleHandleW (L"crypt32"); aheinecke@252: if (hWinhttp) aheinecke@252: { aheinecke@252: FormatMessageW (FORMAT_MESSAGE_ALLOCATE_BUFFER | aheinecke@252: FORMAT_MESSAGE_FROM_HMODULE | aheinecke@252: FORMAT_MESSAGE_IGNORE_INSERTS, aheinecke@252: hWinhttp, HRESULT_CODE (err), 0, aheinecke@252: (LPWSTR) &bufPtr, 0, NULL); aheinecke@252: } aheinecke@252: } aheinecke@252: if (!bufPtr) { aheinecke@252: fprintf (stderr, "Error getting last error for code: %lx \n", err); aheinecke@252: return NULL; aheinecke@252: } aheinecke@252: aheinecke@252: retval = wchar_to_utf8(bufPtr, wcslen(bufPtr)); aheinecke@252: LocalFree (bufPtr); aheinecke@252: aheinecke@252: return retval; aheinecke@252: } aheinecke@252: aheinecke@252: #endif