mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 08:44:19 -04:00
windows unicode support
This commit is contained in:
parent
d297a816af
commit
53f656f028
@ -28,6 +28,9 @@ distribution.
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
#endif
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
#endif // _WIN32
|
||||
|
||||
#include "tinyxml.h"
|
||||
|
||||
@ -40,7 +43,26 @@ FILE* TiXmlFOpen( const char* filename, const char* mode )
|
||||
{
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
|
||||
FILE* fp = 0;
|
||||
errno_t err = fopen_s( &fp, filename, mode );
|
||||
|
||||
/* Addition by drwr for Windows wide-character support */
|
||||
//errno_t err = fopen_s( &fp, filename, mode );
|
||||
errno_t err = 1;
|
||||
{
|
||||
int size = MultiByteToWideChar(CP_UTF8, 0, filename, -1,
|
||||
NULL, 0);
|
||||
if (size > 0) {
|
||||
wchar_t *buffer = new wchar_t[size];
|
||||
int rc = MultiByteToWideChar(CP_UTF8, 0, filename, -1,
|
||||
buffer, size);
|
||||
if (rc != 0) {
|
||||
buffer[size - 1] = 0;
|
||||
err = _wfopen_s( &fp, buffer, mode[0] == 'w' ? L"w" : L"rb" );
|
||||
}
|
||||
delete[] buffer;
|
||||
}
|
||||
}
|
||||
/* End wide-character addition */
|
||||
|
||||
if ( !err && fp )
|
||||
return fp;
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user