]> git.saurik.com Git - wxWidgets.git/commitdiff
restore ConvertToValidURI to prev. version for bw compat. Note changes
authorRyan Norton <wxprojects@comcast.net>
Sat, 30 Oct 2004 20:22:24 +0000 (20:22 +0000)
committerRyan Norton <wxprojects@comcast.net>
Sat, 30 Oct 2004 20:22:24 +0000 (20:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/url.h
src/common/uri.cpp

index f66100f0081ac5023af681e002874d347b66dece..e654bf8d23f274b194b5b84f57472ba3578bf361 100644 (file)
@@ -106,11 +106,11 @@ INCOMPATIBLE CHANGES SINCE 2.4.x
 ! wxURL has undergone some radical changes.
 
     * Many accessors of wxURL - GetHostName, GetProtocolName, and GetPath,
-      have been replaced by its parent's (wxURI) counterparts.
+      have been replaced by its parent's (wxURI) counterparts - GetServer,
+      GetScheme, and GetPath, respectively.
   
-    * ConvertToValidURI has been replaced by wxURI, and even applications
-      with 2.4 compatability enabled will have the second parameter, delims,
-      completely ignored.
+    * ConvertToValidURI has been replaced by wxURI.  Do not use 
+      ConvertToValidURI for future applications.
 
     * ConvertFromURI has been replaced by wxURI::Unescape.
     
@@ -220,7 +220,8 @@ All:
 - added wxTextInputStream::operator>>(wchar_t) for compilers which support this
 - added wxURI, a class for dealing with Uniform Resource Identifiers
 - changed wxURL to inherit from wxURI and provide assignment and comparison
-- Added UTF7 character conversion for platforms that don't support it
+- implemented wxConvUTF7 (modified patch from Fredrik Roubert)
+- added versions of MB2WC and WC2MB for wxMBConv that for embedded null chars
 
 All (GUI):
 
index 984a87fffc5ca2894f78f170a722136ae2588612..89e3e34e74c5526e5db4d72be28aaf706d2dbe0f 100644 (file)
@@ -75,7 +75,7 @@ public:
     wxString GetHostName() const     { return m_server; }
     wxString GetPath() const         { return m_path; }
 
-    //Use wxURI instead - delims is ignored
+    //Use wxURI instead - this does not work that well
     static wxString ConvertToValidURI(
                         const wxString& uri,
                         const wxChar* delims = wxT(";/?:@&=+$,")
index 73b6b1d39d958650bd27237a84f8d34d291d68cc..b2e619adf9a022b87a0a62175754a8e223698752 100644 (file)
@@ -1226,9 +1226,52 @@ bool wxURI::IsDigit(const wxChar& c)
 
 #include "wx/url.h"
 
-wxString wxURL::ConvertToValidURI(const wxString& uri, const wxChar* WXUNUSED(delims))
+//Note that this old code really doesn't convert to a URI that well and looks
+//more like a dirty hack than anything else...
+
+wxString wxURL::ConvertToValidURI(const wxString& uri, const wxChar* delims)
 {
-    return wxURI(uri).BuildURI();
+  wxString out_str;
+  wxString hexa_code;
+  size_t i;
+
+  for (i = 0; i < uri.Len(); i++)
+  {
+    wxChar c = uri.GetChar(i);
+
+    if (c == wxT(' '))
+    {
+      // GRG, Apr/2000: changed to "%20" instead of '+'
+
+      out_str += wxT("%20");
+    }
+    else
+    {
+      // GRG, Apr/2000: modified according to the URI definition (RFC 2396)
+      //
+      // - Alphanumeric characters are never escaped
+      // - Unreserved marks are never escaped
+      // - Delimiters must be escaped if they appear within a component
+      //     but not if they are used to separate components. Here we have
+      //     no clear way to distinguish between these two cases, so they
+      //     are escaped unless they are passed in the 'delims' parameter
+      //     (allowed delimiters).
+
+      static const wxChar marks[] = wxT("-_.!~*()'");
+
+      if ( !wxIsalnum(c) && !wxStrchr(marks, c) && !wxStrchr(delims, c) )
+      {
+        hexa_code.Printf(wxT("%%%02X"), c);
+        out_str += hexa_code;
+      }
+      else
+      {
+        out_str += c;
+      }
+    }
+  }
+
+  return out_str;
 }
 
 wxString wxURL::ConvertFromURI(const wxString& uri)