X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2a9c090515daf5abf994ef973eb4ee7de8816786..6362d82b3ed82aa6795e4ad03160820f94c9e4d4:/src/common/ffile.cpp diff --git a/src/common/ffile.cpp b/src/common/ffile.cpp index 2fa5abeff7..4ea59377b9 100644 --- a/src/common/ffile.cpp +++ b/src/common/ffile.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "ffile.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -33,6 +29,11 @@ #ifndef WX_PRECOMP #include "wx/intl.h" #include "wx/log.h" + #include "wx/crt.h" +#endif + +#ifdef __WINDOWS__ +#include "wx/msw/mslu.h" #endif #include "wx/ffile.h" @@ -57,14 +58,14 @@ // opening the file // ---------------------------------------------------------------------------- -wxFFile::wxFFile(const wxChar *filename, const wxChar *mode) +wxFFile::wxFFile(const wxString& filename, const wxString& mode) { Detach(); (void)Open(filename, mode); } -bool wxFFile::Open(const wxChar *filename, const wxChar *mode) +bool wxFFile::Open(const wxString& filename, const wxString& mode) { wxASSERT_MSG( !m_fp, wxT("should close or detach the old file first") ); @@ -103,12 +104,12 @@ bool wxFFile::Close() // read/write // ---------------------------------------------------------------------------- -bool wxFFile::ReadAll(wxString *str, wxMBConv& conv) +bool wxFFile::ReadAll(wxString *str, const wxMBConv& conv) { wxCHECK_MSG( str, false, wxT("invalid parameter") ); wxCHECK_MSG( IsOpened(), false, wxT("can't read from closed file") ); wxCHECK_MSG( Length() >= 0, false, wxT("invalid length") ); - size_t length = (size_t)Length(); + size_t length = wx_truncate_cast(size_t, Length()); wxCHECK_MSG( (wxFileOffset)length == Length(), false, wxT("huge file not supported") ); clearerr(m_fp); @@ -161,13 +162,21 @@ size_t wxFFile::Write(const void *pBuf, size_t nCount) return nWritten; } +bool wxFFile::Write(const wxString& s, const wxMBConv& conv) +{ + const wxWX2MBbuf buf = s.mb_str(conv); + if ( !buf ) + return false; + + const size_t size = strlen(buf); // FIXME: use buf.length() when available + return Write(buf, size) == size; +} + bool wxFFile::Flush() { if ( IsOpened() ) { - // fflush returns non-zero on error - // - if ( fflush(m_fp) ) + if ( fflush(m_fp) != 0 ) { wxLogSysError(_("failed to flush the file '%s'"), m_name.c_str());