X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5526e819eca4465ed5520d49bccfebc6a28045e0..03443829ac3e79461814da084e01060ddc7e60dd:/src/common/fs_inet.cpp diff --git a/src/common/fs_inet.cpp b/src/common/fs_inet.cpp index acb0c25831..dfbc008965 100644 --- a/src/common/fs_inet.cpp +++ b/src/common/fs_inet.cpp @@ -8,7 +8,7 @@ /* -REMARKS : +REMARKS : This FS creates local cache (in /tmp directory). The cache is freed on program exit. @@ -29,6 +29,13 @@ limitation) #pragma hdrstop #endif +#if !wxUSE_SOCKETS + #undef wxUSE_FS_INET + #define wxUSE_FS_INET 0 +#endif + +#if wxUSE_FS_INET + #ifndef WXPRECOMP #include #endif @@ -62,15 +69,13 @@ class wxInetCacheNode : public wxObject bool wxInternetFSHandler::CanOpen(const wxString& location) { wxString p = GetProtocol(location); - return (p == "http") || (p == "ftp"); + return (p == _T("http")) || (p == _T("ftp")); } - - wxFSFile* wxInternetFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxString& location) { - wxString right = GetProtocol(location) + ":" + GetRightLocation(location); + wxString right = GetProtocol(location) + _T(":") + GetRightLocation(location); wxInputStream *s; wxString content; wxInetCacheNode *info; @@ -78,36 +83,47 @@ wxFSFile* wxInternetFSHandler::OpenFile(wxFileSystem& WXUNUSED(fs), const wxStri info = (wxInetCacheNode*) m_Cache.Get(right); // Add item into cache: - if (info == NULL) { + if (info == NULL) + { wxURL url(right); s = url.GetInputStream(); content = url.GetProtocol().GetContentType(); if (content == wxEmptyString) content = GetMimeTypeFromExt(location); - if (s) { - char buf[256]; + if (s) + { + wxChar buf[256]; - wxGetTempFileName("wxhtml", buf); + 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 } delete s; } - else return NULL; //we can't open the URL + else + { + return (wxFSFile*) NULL; // we can't open the URL + } } // Load item from cache: - s = new wxFileInputStream(info -> GetTemp()); - if (s) { + s = new wxFileInputStream(info->GetTemp()); + if (s) + { return new wxFSFile(s, right, - info -> GetMime(), + info->GetMime(), GetAnchor(location)); } - else return NULL; + else return (wxFSFile*) NULL; } @@ -118,13 +134,27 @@ wxInternetFSHandler::~wxInternetFSHandler() wxInetCacheNode *n2; m_Cache.BeginFind(); - while ((n = m_Cache.Next()) != NULL) { - n2 = (wxInetCacheNode*) n -> GetData(); - wxRemoveFile(n2 -> GetTemp()); + while ((n = m_Cache.Next()) != NULL) + { + n2 = (wxInetCacheNode*) n->GetData(); + wxRemoveFile(n2->GetTemp()); delete n2; } } +class wxFileSystemInternetModule : public wxModule +{ + DECLARE_DYNAMIC_CLASS(wxFileSystemInternetModule) + public: + virtual bool OnInit() + { + wxFileSystem::AddHandler(new wxInternetFSHandler); + return TRUE; + } + virtual void OnExit() {} +}; +IMPLEMENT_DYNAMIC_CLASS(wxFileSystemInternetModule, wxModule) +#endif // wxUSE_FS_INET