Core: Get Zip files to use utf16 paths

This commit is contained in:
zilmar 2024-11-21 10:43:56 +10:30
parent 2ec9ed08a4
commit 58a13b8e28
4 changed files with 12 additions and 21 deletions

View File

@ -2,3 +2,4 @@
#include "../../3rdParty/zlib/contrib/minizip/unzip.h"
#include "../../3rdParty/zlib/contrib/minizip/zip.h"
#include "../../3rdParty/zlib/contrib/minizip/iowin32.h"

View File

@ -136,7 +136,9 @@ bool CN64Rom::AllocateAndLoadN64Image(const char * FileLoc, bool LoadBootCodeOnl
bool CN64Rom::AllocateAndLoadZipImage(const char * FileLoc, bool LoadBootCodeOnly)
{
unzFile file = unzOpen(FileLoc);
zlib_filefunc64_def ffunc;
fill_win32_filefunc64W(&ffunc);
unzFile file = unzOpen2_64(stdstr(FileLoc).ToUTF16().c_str() , &ffunc);
if (file == nullptr)
{
return false;

View File

@ -352,7 +352,9 @@ bool CRomList::LoadDataFromRomFile(const char * FileName, uint8_t * Data, int32_
unz_file_info info;
char zname[132];
unzFile file;
file = unzOpen(FileName);
zlib_filefunc64_def ffunc;
fill_win32_filefunc64W(&ffunc);
file = unzOpen2_64(stdstr(FileName).ToUTF16().c_str(), &ffunc);
if (file == nullptr)
{
return false;

View File

@ -1089,7 +1089,6 @@ void CRomBrowser::SelectRomDir(void)
std::wstring title = wGS(SELECT_ROM_DIR);
WriteTrace(TraceUserInterface, TraceDebug, "1");
stdstr RomDir = g_Settings->LoadStringVal(RomList_GameDir).c_str();
bi.hwndOwner = m_MainWindow;
bi.pidlRoot = nullptr;
@ -1098,28 +1097,15 @@ void CRomBrowser::SelectRomDir(void)
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
bi.lpfn = (BFFCALLBACK)SelectRomDirCallBack;
bi.lParam = (UINT_PTR)RomDir.c_str();
WriteTrace(TraceUserInterface, TraceDebug, "2");
if ((pidl = SHBrowseForFolder(&bi)) != nullptr)
{
WriteTrace(TraceUserInterface, TraceDebug, "3");
char Directory[_MAX_PATH];
if (SHGetPathFromIDListA(pidl, Directory))
wchar_t Directory[_MAX_PATH];
if (SHGetPathFromIDList(pidl, Directory))
{
int32_t len = (int32_t)((UINT_PTR)strlen(Directory));
WriteTrace(TraceUserInterface, TraceDebug, "4");
if (Directory[len - 1] != '\\')
{
strcat(Directory, "\\");
}
WriteTrace(TraceUserInterface, TraceDebug, "5");
WriteTrace(TraceUserInterface, TraceDebug, "6");
g_Settings->SaveString(RomList_GameDir, Directory);
WriteTrace(TraceUserInterface, TraceDebug, "7");
Notify().AddRecentDir(Directory);
WriteTrace(TraceUserInterface, TraceDebug, "8");
CPath RomDir(stdstr().FromUTF16(Directory), "");
g_Settings->SaveString(RomList_GameDir, RomDir.GetDriveDirectory());
Notify().AddRecentDir(RomDir.GetDriveDirectory().c_str());
RefreshRomList();
WriteTrace(TraceUserInterface, TraceDebug, "9");
}
}
}