X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/846978d7278b1b40102e2068d85236492ea6b82f..81f90336020eab200e8f09a6b726c7ec49439b68:/src/common/uri.cpp diff --git a/src/common/uri.cpp b/src/common/uri.cpp index d58c572fb9..c7b04ebe25 100644 --- a/src/common/uri.cpp +++ b/src/common/uri.cpp @@ -62,7 +62,7 @@ wxURI::wxURI(const wxString& uri) : m_hostType(wxURI_REGNAME), m_fields(0) Create(uri); } -wxURI::wxURI(const wxURI& uri) : m_hostType(wxURI_REGNAME), m_fields(0) +wxURI::wxURI(const wxURI& uri) : wxObject(), m_hostType(wxURI_REGNAME), m_fields(0) { Assign(uri); } @@ -79,7 +79,7 @@ wxURI::~wxURI() void wxURI::Clear() { m_scheme = m_user = m_server = m_port = m_path = - m_query = m_fragment = wxT(""); + m_query = m_fragment = wxEmptyString; m_hostType = wxURI_REGNAME; @@ -117,7 +117,8 @@ wxChar wxURI::TranslateEscape(const wxChar* s) { wxASSERT_MSG(IsHex(*s) && IsHex(*(s+1)), wxT("Invalid escape!")); - return (wxChar)( CharToHex(*s) * 0x10 + CharToHex(*++s) ); + //<<4 == 16 + return (wxChar)( CharToHex(*s) << 4 ) | CharToHex(*++s); } wxString wxURI::Unescape(const wxString& uri) @@ -131,6 +132,8 @@ wxString wxURI::Unescape(const wxString& uri) new_uri += wxURI::TranslateEscape( &(uri.c_str()[i+1]) ); i += 2; } + else + new_uri += uri[i]; } return new_uri; @@ -398,7 +401,7 @@ const wxChar* wxURI::ParseScheme(const wxChar* uri) } else //relative uri with relative path reference - m_scheme = wxT(""); + m_scheme = wxEmptyString; } // else //relative uri with _possible_ relative path reference @@ -447,7 +450,7 @@ const wxChar* wxURI::ParseUser(const wxChar* uri) uricopy = ++uri; } else - m_user = wxT(""); + m_user = wxEmptyString; return uricopy; } @@ -464,26 +467,28 @@ const wxChar* wxURI::ParseServer(const wxChar* uri) // IP-literal = "[" ( IPv6address / IPvFuture ) "]" if (*uri == wxT('[')) { - if (ParseIPv6address(++uri) && *uri == wxT(']')) + ++uri; //some compilers don't support *&ing a ++* + if (ParseIPv6address(uri) && *uri == wxT(']')) { ++uri; m_hostType = wxURI_IPV6ADDRESS; wxStringBufferLength theBuffer(m_server, uri - uricopy); - wxMemcpy(theBuffer, uricopy, uri-uricopy); + wxTmemcpy(theBuffer, uricopy, uri-uricopy); theBuffer.SetLength(uri-uricopy); } else { uri = uricopy; - if (ParseIPvFuture(++uri) && *uri == wxT(']')) + ++uri; //some compilers don't support *&ing a ++* + if (ParseIPvFuture(uri) && *uri == wxT(']')) { ++uri; m_hostType = wxURI_IPVFUTURE; wxStringBufferLength theBuffer(m_server, uri - uricopy); - wxMemcpy(theBuffer, uricopy, uri-uricopy); + wxTmemcpy(theBuffer, uricopy, uri-uricopy); theBuffer.SetLength(uri-uricopy); } else @@ -497,7 +502,7 @@ const wxChar* wxURI::ParseServer(const wxChar* uri) m_hostType = wxURI_IPV4ADDRESS; wxStringBufferLength theBuffer(m_server, uri - uricopy); - wxMemcpy(theBuffer, uricopy, uri-uricopy); + wxTmemcpy(theBuffer, uricopy, uri-uricopy); theBuffer.SetLength(uri-uricopy); } else @@ -591,7 +596,7 @@ const wxChar* wxURI::ParsePath(const wxChar* uri, bool bReference, bool bNormali { wxStringBufferLength theBuffer(m_path, m_path.length() + 1); #if wxUSE_STL - wxMemcpy(theBuffer, m_path.c_str(), m_path.length()+1); + wxTmemcpy(theBuffer, m_path.c_str(), m_path.length()+1); #endif Normalize(theBuffer, true); theBuffer.SetLength(wxStrlen(theBuffer)); @@ -631,7 +636,7 @@ const wxChar* wxURI::ParsePath(const wxChar* uri, bool bReference, bool bNormali { wxStringBufferLength theBuffer(m_path, m_path.length() + 1); #if wxUSE_STL - wxMemcpy(theBuffer, m_path.c_str(), m_path.length()+1); + wxTmemcpy(theBuffer, m_path.c_str(), m_path.length()+1); #endif Normalize(theBuffer); theBuffer.SetLength(wxStrlen(theBuffer)); @@ -734,7 +739,7 @@ void wxURI::Resolve(const wxURI& base, int flags) return; } - //No sheme - inherit + //No scheme - inherit m_scheme = base.m_scheme; m_fields |= wxURI_SCHEME; @@ -797,7 +802,7 @@ void wxURI::Resolve(const wxURI& base, int flags) // T.query = R.query; if (m_path[0u] != wxT('/')) { - //Marge paths + //Merge paths const wxChar* op = m_path.c_str(); const wxChar* bp = base.m_path.c_str() + base.m_path.Length(); @@ -1150,11 +1155,11 @@ bool wxURI::ParseIPvFuture(const wxChar*& uri) // --------------------------------------------------------------------------- //static -wxInt32 wxURI::CharToHex(const wxChar& c) +wxChar wxURI::CharToHex(const wxChar& c) { - if ((c >= wxT('A')) && (c <= wxT('Z'))) return c - wxT('A') + 0x0A; - if ((c >= wxT('a')) && (c <= wxT('z'))) return c - wxT('a') + 0x0a; - if ((c >= wxT('0')) && (c <= wxT('9'))) return c - wxT('0') + 0x00; + if ((c >= wxT('A')) && (c <= wxT('Z'))) return wxChar(c - wxT('A') + 0x0A); + if ((c >= wxT('a')) && (c <= wxT('z'))) return wxChar(c - wxT('a') + 0x0a); + if ((c >= wxT('0')) && (c <= wxT('9'))) return wxChar(c - wxT('0') + 0x00); return 0; } @@ -1232,6 +1237,21 @@ bool wxURI::IsDigit(const wxChar& c) #include "wx/url.h" +wxString wxURL::GetProtocolName() const +{ + return m_scheme; +} + +wxString wxURL::GetHostName() const +{ + return m_server; +} + +wxString wxURL::GetPath() const +{ + return m_path; +} + //Note that this old code really doesn't convert to a URI that well and looks //more like a dirty hack than anything else...