size_t wxFileInputStream::OnSysRead(void *buffer, size_t size)
{
- off_t ret;
-
- ret = m_file->Read(buffer, size);
+ off_t ret = m_file->Read(buffer, size);
- m_lasterror = wxStream_NOERROR;
- if (m_file->Eof())
- m_lasterror = wxStream_EOF;
- if (ret == wxInvalidOffset)
+ switch ( ret )
{
- m_lasterror = wxStream_READ_ERR;
- ret = 0;
+ case 0:
+ m_lasterror = wxSTREAM_EOF;
+ break;
+
+ case wxInvalidOffset:
+ m_lasterror = wxSTREAM_READ_ERROR;
+ ret = 0;
+ break;
+
+ default:
+ m_lasterror = wxSTREAM_NO_ERROR;
}
return ret;
{
m_file = new wxFile(fileName, wxFile::write);
m_file_destroy = TRUE;
+
+ if (!m_file->IsOpened())
+ {
+ m_lasterror = wxSTREAM_WRITE_ERROR;
+ }
+ else
+ {
+ if (m_file->Error())
+ m_lasterror = wxSTREAM_WRITE_ERROR;
+ }
}
wxFileOutputStream::wxFileOutputStream(wxFile& file)
}
wxFileOutputStream::wxFileOutputStream()
- : wxOutputStream()
+ : wxOutputStream()
{
m_file_destroy = FALSE;
m_file = NULL;
wxFileOutputStream::~wxFileOutputStream()
{
- if (m_file_destroy)
+ if (m_file_destroy)
{
Sync();
delete m_file;
size_t wxFileOutputStream::OnSysWrite(const void *buffer, size_t size)
{
size_t ret = m_file->Write(buffer, size);
- if (m_file->Error())
- m_lasterror = wxStream_WRITE_ERR;
- else
- m_lasterror = wxStream_NOERROR;
+
+ m_lasterror = m_file->Error() ? wxSTREAM_WRITE_ERROR : wxSTREAM_NO_ERROR;
+
return ret;
}
if (m_file->Eof())
m_lasterror = wxStream_EOF;
- if (ret == wxInvalidOffset)
+ if (ret == wxInvalidOffset)
{
m_lasterror = wxStream_READ_ERR;
ret = 0;
off_t wxFFileInputStream::OnSysSeek(off_t pos, wxSeekMode mode)
{
- return m_file->Seek(pos, mode);
+ return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset );
}
off_t wxFFileInputStream::OnSysTell() const
{
m_file = new wxFFile(fileName, "w+b");
m_file_destroy = TRUE;
+
+ if (!m_file->IsOpened())
+ {
+ m_lasterror = wxSTREAM_WRITE_ERROR;
+ }
+ else
+ {
+ if (m_file->Error())
+ m_lasterror = wxSTREAM_WRITE_ERROR;
+ }
}
wxFFileOutputStream::wxFFileOutputStream(wxFFile& file)
wxFFileOutputStream::~wxFFileOutputStream()
{
- if (m_file_destroy)
+ if (m_file_destroy)
{
Sync();
delete m_file;
off_t wxFFileOutputStream::OnSysSeek(off_t pos, wxSeekMode mode)
{
- return m_file->Seek(pos, mode);
+ return ( m_file->Seek(pos, mode) ? pos : wxInvalidOffset );
}
void wxFFileOutputStream::Sync()