]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filesys.cpp
compilation fix for PCH-less compilation after the last change
[wxWidgets.git] / src / common / filesys.cpp
index 9048f988c091c97f94f1ef05dc0554e6205d6421..fc12af7d55762f6c4504186faf937d23fce932bc 100644 (file)
@@ -193,8 +193,10 @@ wxString wxFileSystemHandler::GetAnchor(const wxString& location)
 
     for (int i = l-1; i >= 0; i--) {
         c = location[i];
-        if (c == wxT('#')) return location.Right(l-i-1);
-        else if ((c == wxT('.')) || (c == wxT('/')) || (c == wxT('\\')) || (c == wxT(':'))) return wxEmptyString;
+        if (c == wxT('#'))
+            return location.Right(l-i-1);
+        else if ((c == wxT('/')) || (c == wxT('\\')) || (c == wxT(':')))
+            return wxEmptyString;
     }
     return wxEmptyString;
 }
@@ -663,14 +665,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;
 }