X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..c932709d31bf359c994dc2050bec1b3b986bbd62:/src/common/wfstream.cpp?ds=sidebyside diff --git a/src/common/wfstream.cpp b/src/common/wfstream.cpp index 56743fd214..296f205b2e 100644 --- a/src/common/wfstream.cpp +++ b/src/common/wfstream.cpp @@ -6,10 +6,10 @@ // Created: 11/07/98 // RCS-ID: $Id$ // Copyright: (c) Guilhem Lavaux -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "wfstream.h" #endif @@ -71,19 +71,23 @@ size_t wxFileInputStream::OnSysRead(void *buffer, size_t size) { off_t ret = m_file->Read(buffer, size); - switch ( ret ) - { - case 0: - m_lasterror = wxSTREAM_EOF; - break; - - case wxInvalidOffset: - m_lasterror = wxSTREAM_READ_ERROR; - ret = 0; - break; + // NB: we can't use a switch here because HP-UX CC doesn't allow + // switching over long long (which off_t is in 64bit mode) - default: - m_lasterror = wxSTREAM_NO_ERROR; + if ( !ret ) + { + // nothing read, so nothing more to read + m_lasterror = wxSTREAM_EOF; + } + else if ( ret == wxInvalidOffset ) + { + m_lasterror = wxSTREAM_READ_ERROR; + ret = 0; + } + else + { + // normal case + m_lasterror = wxSTREAM_NO_ERROR; } return ret; @@ -194,7 +198,7 @@ wxFileStream::wxFileStream(const wxString& fileName) wxFFileInputStream::wxFFileInputStream(const wxString& fileName) : wxInputStream() { - m_file = new wxFFile(fileName, "rb"); + m_file = new wxFFile(fileName, _T("rb")); m_file_destroy = TRUE; } @@ -247,7 +251,13 @@ size_t wxFFileInputStream::OnSysRead(void *buffer, size_t size) off_t wxFFileInputStream::OnSysSeek(off_t pos, wxSeekMode mode) { - return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset ); +#ifdef __VMS +#pragma message disable intsignchange +#endif + return ( m_file->Seek(pos, mode) ? m_file->Tell() : wxInvalidOffset ); +#ifdef __VMS +#pragma message enable intsignchange +#endif } off_t wxFFileInputStream::OnSysTell() const @@ -261,7 +271,7 @@ off_t wxFFileInputStream::OnSysTell() const wxFFileOutputStream::wxFFileOutputStream(const wxString& fileName) { - m_file = new wxFFile(fileName, "w+b"); + m_file = new wxFFile(fileName, _T("w+b")); m_file_destroy = TRUE; if (!m_file->IsOpened()) @@ -320,7 +330,13 @@ off_t wxFFileOutputStream::OnSysTell() const off_t wxFFileOutputStream::OnSysSeek(off_t pos, wxSeekMode mode) { - return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset ); +#ifdef __VMS +#pragma message disable intsignchange +#endif + return ( m_file->Seek(pos, mode) ? m_file->Tell() : wxInvalidOffset ); +#ifdef __VMS +#pragma message enable intsignchange +#endif } void wxFFileOutputStream::Sync()