#include "aout/ar.h"
#if defined (_WIN32)
#include <windows.h>
+#include <locale.h>
#endif
#ifndef S_IXUSR
wchar_t ** lpFilePart = {NULL};
const wchar_t prefix[] = L"\\\\?\\";
const size_t partPathLen = strlen (filename) + 1;
+#ifdef __MINGW32__
+ const unsigned int cp = ___lc_codepage_func();
+#else
+ const unsigned int cp = CP_UTF8;
+#endif
/* Converting the partial path from ascii to unicode.
1) Get the length: Calling with lpWideCharStr set to null returns the length.
2) Convert the string: Calling with cbMultiByte set to -1 includes the terminating null. */
- size_t partPathWSize = MultiByteToWideChar (CP_UTF8, 0, filename, -1, NULL, 0);
+ size_t partPathWSize = MultiByteToWideChar (cp, 0, filename, -1, NULL, 0);
wchar_t * partPath = calloc (partPathWSize, sizeof(wchar_t));
size_t ix;
- MultiByteToWideChar (CP_UTF8, 0, filename, -1, partPath, partPathWSize);
+ MultiByteToWideChar (cp, 0, filename, -1, partPath, partPathWSize);
/* Convert any UNIX style path separators into the DOS i.e. backslash separator. */
for (ix = 0; ix < partPathLen; ix++)
/* It is non-standard for modes to exceed 16 characters. */
wchar_t modesW[16];
- MultiByteToWideChar (CP_UTF8, 0, modes, -1, modesW, sizeof(modesW));
+ MultiByteToWideChar (cp, 0, modes, -1, modesW, sizeof(modesW));
FILE * file = _wfopen (fullPath, modesW);
free (fullPath);