Commit 48d53cda authored by Chen Bill's avatar Chen Bill

use wchar_t name in myfopen

parent a696078d
...@@ -58,16 +58,16 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) { ...@@ -58,16 +58,16 @@ inline int myswprintf(wchar_t(&buf)[N], const wchar_t* fmt, TR... args) {
#include "../ocgcore/ocgapi.h" #include "../ocgcore/ocgapi.h"
#include "../ocgcore/common.h" #include "../ocgcore/common.h"
inline FILE* myfopen(const char* filename, const char* mode) { inline FILE* myfopen(const wchar_t* filename, const char* mode) {
FILE* fp{}; FILE* fp{};
#ifdef _WIN32 #ifdef _WIN32
wchar_t wname[256]{};
wchar_t wmode[20]{}; wchar_t wmode[20]{};
BufferIO::DecodeUTF8(filename, wname);
BufferIO::CopyCharArray(mode, wmode); BufferIO::CopyCharArray(mode, wmode);
fp = _wfopen(wname, wmode); fp = _wfopen(filename, wmode);
#else #else
fp = fopen(filename, mode); char fname[1024]{};
BufferIO::EncodeUTF8(filename, fname);
fp = fopen(fname, mode);
#endif #endif
return fp; return fp;
} }
......
...@@ -263,9 +263,7 @@ void DeckManager::GetDeckFile(wchar_t* ret, irr::gui::IGUIComboBox* cbCategory, ...@@ -263,9 +263,7 @@ void DeckManager::GetDeckFile(wchar_t* ret, irr::gui::IGUIComboBox* cbCategory,
} }
} }
FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) { FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
char fullname[256]{}; FILE* fp = myfopen(file, mode);
BufferIO::EncodeUTF8(file, fullname);
FILE* fp = myfopen(fullname, mode);
return fp; return fp;
} }
IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) { IReadFile* DeckManager::OpenDeckReader(const wchar_t* file) {
......
...@@ -582,9 +582,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) { ...@@ -582,9 +582,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
const wchar_t* name = mainGame->lstSinglePlayList->getListItem(sel); const wchar_t* name = mainGame->lstSinglePlayList->getListItem(sel);
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./single/%ls", name); myswprintf(fname, L"./single/%ls", name);
char fullname[256]{}; FILE* fp = myfopen(fname, "rb");
BufferIO::EncodeUTF8(fname, fullname);
FILE* fp = myfopen(fullname, "rb");
if(!fp) { if(!fp) {
mainGame->stSinglePlayInfo->setText(L""); mainGame->stSinglePlayInfo->setText(L"");
break; break;
......
...@@ -102,9 +102,7 @@ void Replay::SaveReplay(const wchar_t* name) { ...@@ -102,9 +102,7 @@ void Replay::SaveReplay(const wchar_t* name) {
return; return;
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./replay/%ls.yrp", name); myswprintf(fname, L"./replay/%ls.yrp", name);
char fullname[256]{}; FILE* rfp = myfopen(fname, "wb");
BufferIO::EncodeUTF8(fname, fullname);
FILE* rfp = myfopen(fullname, "wb");
if(!rfp) if(!rfp)
return; return;
fwrite(&pheader, sizeof pheader, 1, rfp); fwrite(&pheader, sizeof pheader, 1, rfp);
...@@ -112,14 +110,11 @@ void Replay::SaveReplay(const wchar_t* name) { ...@@ -112,14 +110,11 @@ void Replay::SaveReplay(const wchar_t* name) {
fclose(rfp); fclose(rfp);
} }
bool Replay::OpenReplay(const wchar_t* name) { bool Replay::OpenReplay(const wchar_t* name) {
char fullname[256]{}; FILE* rfp = myfopen(name, "rb");
BufferIO::EncodeUTF8(name, fullname);
FILE* rfp = myfopen(fullname, "rb");
if(!rfp) { if(!rfp) {
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./replay/%ls", name); myswprintf(fname, L"./replay/%ls", name);
BufferIO::EncodeUTF8(fname, fullname); rfp = myfopen(fname, "rb");
rfp = myfopen(fullname, "rb");
} }
if(!rfp) if(!rfp)
return false; return false;
...@@ -156,9 +151,7 @@ bool Replay::OpenReplay(const wchar_t* name) { ...@@ -156,9 +151,7 @@ bool Replay::OpenReplay(const wchar_t* name) {
bool Replay::CheckReplay(const wchar_t* name) { bool Replay::CheckReplay(const wchar_t* name) {
wchar_t fname[256]; wchar_t fname[256];
myswprintf(fname, L"./replay/%ls", name); myswprintf(fname, L"./replay/%ls", name);
char fullname[256]{}; FILE* rfp = myfopen(fname, "rb");
BufferIO::EncodeUTF8(fname, fullname);
FILE* rfp = myfopen(fullname, "rb");
if(!rfp) if(!rfp)
return false; return false;
ReplayHeader rheader; ReplayHeader rheader;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment