X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/505710ca37aa323c286b1def350ee3e5d7887e5d..82e94f591f2638b07a4f28c096d94ec7e8571c20:/src/common/fs_zip.cpp diff --git a/src/common/fs_zip.cpp b/src/common/fs_zip.cpp index 97cfa0bb1b..27ed0b6a55 100644 --- a/src/common/fs_zip.cpp +++ b/src/common/fs_zip.cpp @@ -15,7 +15,7 @@ #include "wx/wxprec.h" -#ifdef __BORDLANDC__ +#ifdef __BORLANDC__ #pragma hdrstop #endif @@ -89,8 +89,10 @@ wxFSFile* wxZipFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& l if (right.GetChar(0) == wxT('/')) right = right.Mid(1); - s = new wxZipInputStream(left, right); - if (s && (s->LastError() == wxStream_NOERROR)) + wxFileName leftFilename = wxFileSystem::URLToFileName(left); + + s = new wxZipInputStream(leftFilename.GetFullPath(), right); + if (s && s->IsOk() ) { return new wxFSFile(s, left + wxT("#zip:") + right, @@ -135,7 +137,8 @@ wxString wxZipFSHandler::FindFirst(const wxString& spec, int flags) } m_ZipFile = left; - m_Archive = (void*) unzOpen(m_ZipFile.mb_str()); + wxString nativename = wxFileSystem::URLToFileName(m_ZipFile).GetFullPath(); + m_Archive = (void*) unzOpen(nativename.mb_str()); m_Pattern = right.AfterLast(wxT('/')); m_BaseDir = right.BeforeLast(wxT('/')); @@ -179,8 +182,8 @@ wxString wxZipFSHandler::DoFind() while (match == wxEmptyString) { unzGetCurrentFileInfo((unzFile)m_Archive, NULL, namebuf, 1024, NULL, 0, NULL, 0); - for (c = namebuf; *c; c++) if (*c == wxT('\\')) *c = wxT('/'); - namestr = namebuf; + for (c = namebuf; *c; c++) if (*c == '\\') *c = '/'; + namestr = wxString::FromAscii( namebuf ); // TODO what encoding does ZIP use? if (m_AllowDirs) {