X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/913df6f2e0ab502732b271624c95af807d42007c..6842d18650b487249b4ae29d0d7e17231b24cde8:/src/common/fs_inet.cpp diff --git a/src/common/fs_inet.cpp b/src/common/fs_inet.cpp index dfbc008965..4a06c7c460 100644 --- a/src/common/fs_inet.cpp +++ b/src/common/fs_inet.cpp @@ -23,7 +23,7 @@ limitation) #pragma implementation #endif -#include +#include "wx/wxprec.h" #ifdef __BORDLANDC__ #pragma hdrstop @@ -37,13 +37,14 @@ limitation) #if wxUSE_FS_INET #ifndef WXPRECOMP -#include +#include "wx/wx.h" #endif #include "wx/wfstream.h" #include "wx/url.h" #include "wx/filesys.h" #include "wx/fs_inet.h" +#include "wx/module.h" class wxInetCacheNode : public wxObject { @@ -69,13 +70,19 @@ class wxInetCacheNode : public wxObject bool wxInternetFSHandler::CanOpen(const wxString& location) { wxString p = GetProtocol(location); - return (p == _T("http")) || (p == _T("ftp")); + if ((p == wxT("http")) || (p == wxT("ftp"))) + { + wxURL url(GetProtocol(location) + wxT(":") + GetRightLocation(location)); + return (url.GetError() == wxURL_NOERR); + } + else + return FALSE; } wxFSFile* wxInternetFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& location) { - wxString right = GetProtocol(location) + _T(":") + GetRightLocation(location); + wxString right = GetProtocol(location) + wxT(":") + GetRightLocation(location); wxInputStream *s; wxString content; wxInetCacheNode *info; @@ -86,32 +93,30 @@ wxFSFile* wxInternetFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxStri if (info == NULL) { wxURL url(right); - s = url.GetInputStream(); - content = url.GetProtocol().GetContentType(); - if (content == wxEmptyString) content = GetMimeTypeFromExt(location); - if (s) - { - wxChar buf[256]; - - wxGetTempFileName( _T("wxhtml"), buf); - info = new wxInetCacheNode(buf, content); - m_Cache.Put(right, info); - - { // ok, now copy it: -#if defined(__VISAGECPP__) -// VA thinks this is an ambiguous call - wxFileOutputStream sout((wxString)buf); -#else - wxFileOutputStream sout(buf); -#endif - s -> Read(sout); // copy the stream + if (url.GetError() == wxURL_NOERR) + { + s = url.GetInputStream(); + content = url.GetProtocol().GetContentType(); + if (content == wxEmptyString) content = GetMimeTypeFromExt(location); + if (s) + { + wxChar buf[256]; + + wxGetTempFileName( wxT("wxhtml"), buf); + info = new wxInetCacheNode(buf, content); + m_Cache.Put(right, info); + + { // ok, now copy it: + wxFileOutputStream sout((wxString)buf); + s -> Read(sout); // copy the stream + } + delete s; } - delete s; + else + return (wxFSFile*) NULL; // we can't open the URL } else - { - return (wxFSFile*) NULL; // we can't open the URL - } + return (wxFSFile*) NULL; // incorrect URL } // Load item from cache: