From 8fda05d726564e48b08d7e40b64ce9f314a42b73 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 20 Feb 2008 16:33:55 +0000 Subject: [PATCH] revert not encoding the colons in FileNameToURL() under MSW (r51904, patch 1890922) as this completely broke wxFS URLs parsing; explain this in a comment in the trunk version git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/filesys.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/common/filesys.cpp b/src/common/filesys.cpp index 9048f988c0..71dc13788b 100644 --- a/src/common/filesys.cpp +++ b/src/common/filesys.cpp @@ -663,14 +663,17 @@ wxString wxFileSystem::FileNameToURL(const wxFileName& filename) url.Replace(g_nativePathString, g_unixPathString); url.Replace(wxT("%"), wxT("%25")); // '%'s must be replaced first! url.Replace(wxT("#"), wxT("%23")); -#ifndef __WXMSW__ - // even though encoding the colon is (AFAICS) the right thing to do, we - // shouldn't do this under Windows because IE refuses to handle the - // resulting file:// URLs and Firefox and Opera (and probably all the other - // browsers as they need to be IE-compatible anyhow) open both the versions - // with ':' and "%3A", so leave the colon alone to keep IE happy + + // notice that all colons *must* be encoded in the paths used by + // wxFileSystem even though this makes URLs produced by this method + // unusable with IE under Windows as it requires "file:///c:/foo.bar" and + // doesn't accept "file:///c%3a/foo.bar" -- but then we never made any + // guarantees about general suitability of the strings returned by this + // method, they must work with wxFileSystem only and not encoding the colon + // breaks handling of "http://wherever/whatever.zip#zip:filename.ext" URLs + // so we really can't do this without heavy changes to the parsing code + // here, in particular in GetRightLocation() url.Replace(wxT(":"), wxT("%3A")); -#endif // __WXMSW__ url = wxT("file:") + url; return url; }