X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..83a7ab5c711237d32068cce4c82b7e16808d5614:/src/msw/urlmsw.cpp diff --git a/src/msw/urlmsw.cpp b/src/msw/urlmsw.cpp index 9799473189..7c7bab29c7 100644 --- a/src/msw/urlmsw.cpp +++ b/src/msw/urlmsw.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/urlmsw.cpp +// Name: src/msw/urlmsw.cpp // Purpose: MS-Windows native URL support based on WinINet // Author: Hajo Kirchhoff // Modified by: // Created: 06/11/2003 // RCS-ID: $Id$ // Copyright: (c) 2003 Hajo Kirchhoff -// Licence: wxWidgets licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx.h". @@ -18,8 +18,15 @@ #if wxUSE_URL_NATIVE +#ifndef WX_PRECOMP + #include "wx/list.h" + #include "wx/string.h" + #include "wx/utils.h" + #include "wx/module.h" +#endif + #if !wxUSE_PROTOCOL_HTTP -#include +#include "wx/protocol/protocol.h" // empty http protocol replacement (for now) // so that wxUSE_URL_NATIVE can be used with @@ -31,7 +38,7 @@ public: wxProtocolError GetError() { return m_error; } - virtual bool Abort() { return TRUE; } + virtual bool Abort() { return true; } wxInputStream *GetInputStream(const wxString& WXUNUSED(path)) { @@ -48,7 +55,7 @@ protected: // the only "reason for being" for this class is to tell // wxURL that there is someone dealing with the http protocol IMPLEMENT_DYNAMIC_CLASS(wxHTTPDummyProto, wxProtocol) -IMPLEMENT_PROTOCOL(wxHTTPDummyProto, wxT("http"), NULL, FALSE) +IMPLEMENT_PROTOCOL(wxHTTPDummyProto, wxT("http"), NULL, false) USE_PROTOCOL(wxHTTPDummyProto) #endif // !wxUSE_PROTOCOL_HTTP @@ -59,10 +66,6 @@ USE_PROTOCOL(wxHTTPDummyProto) #pragma comment(lib, "wininet.lib") #endif -#include "wx/string.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/module.h" #include "wx/url.h" #include @@ -118,14 +121,15 @@ class /*WXDLLIMPEXP_NET */ wxWinINetInputStream : public wxInputStream { public: wxWinINetInputStream(HINTERNET hFile=0); - ~wxWinINetInputStream(); + virtual ~wxWinINetInputStream(); void Attach(HINTERNET hFile); - off_t SeekI( off_t WXUNUSED(pos), wxSeekMode WXUNUSED(mode) ) + wxFileOffset SeekI( wxFileOffset WXUNUSED(pos), wxSeekMode WXUNUSED(mode) ) { return -1; } - off_t TellI() const + wxFileOffset TellI() const { return -1; } + size_t GetSize() const; protected: void SetError(wxStreamError err) { m_lasterror=err; } @@ -135,6 +139,18 @@ protected: DECLARE_NO_COPY_CLASS(wxWinINetInputStream) }; +size_t wxWinINetInputStream::GetSize() const +{ + DWORD contentLength = 0; + DWORD dwSize = sizeof(contentLength); + DWORD index = 0; + + if ( HttpQueryInfo( m_hFile, HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER, &contentLength, &dwSize, &index) ) + return contentLength; + else + return 0; +} + size_t wxWinINetInputStream::OnSysRead(void *buffer, size_t bufsize) { DWORD bytesread = 0; @@ -199,11 +215,11 @@ wxURLNativeImp *wxURL::CreateNativeImpObject() wxInputStream *wxWinINetURL::GetInputStream(wxURL *owner) { DWORD service; - if ( owner->GetProtocolName() == wxT("http") ) + if ( owner->GetScheme() == wxT("http") ) { service = INTERNET_SERVICE_HTTP; } - else if ( owner->GetProtocolName() == wxT("ftp") ) + else if ( owner->GetScheme() == wxT("ftp") ) { service = INTERNET_SERVICE_FTP; } @@ -230,4 +246,3 @@ wxInputStream *wxWinINetURL::GetInputStream(wxURL *owner) } #endif // wxUSE_URL_NATIVE -