#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"
// 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") );
// 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);
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());