#if wxUSE_FILE
// standard
-#if defined(__WXMSW__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
+#if defined(__WINDOWS__) && !defined(__GNUWIN32__) && !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
#define WIN32_LEAN_AND_MEAN
#define NOSERVICE
#define NOCRYPT
#define NOMCX
-#elif defined(__WXMSW__) && defined(__WXWINCE__)
+#elif defined(__WINDOWS__) && defined(__WXWINCE__)
#include "wx/msw/missing.h"
#elif (defined(__OS2__))
#include <io.h>
char* mktemp( char * path ) { return path ;}
#include <stat.h>
#include <unistd.h>
-#elif defined(__WXPALMOS__)
- #include "wx/palmos/missing.h"
#else
#error "Please specify the header with file functions declarations."
#endif //Win/UNIX
#define O_BINARY (0)
#endif //__UNIX__
-#ifdef __WXMSW__
+#ifdef __WINDOWS__
#include "wx/msw/mslu.h"
#endif
{
// if bOverwrite we create a new file or truncate the existing one,
// otherwise we only create the new file and fail if it already exists
- int fd = wxOpen( fileName,
+ int fildes = wxOpen( fileName,
O_BINARY | O_WRONLY | O_CREAT |
(bOverwrite ? O_TRUNC : O_EXCL),
accessMode );
- if ( CheckForError(fd) )
+ if ( CheckForError(fildes) )
{
wxLogSysError(_("can't create file '%s'"), fileName);
return false;
}
- Attach(fd);
+ Attach(fildes);
return true;
}
accessMode &= wxS_IRUSR | wxS_IWUSR;
#endif // __WINDOWS__
- int fd = wxOpen( fileName, flags, accessMode);
+ int fildes = wxOpen( fileName, flags, accessMode);
- if ( CheckForError(fd) )
+ if ( CheckForError(fildes) )
{
wxLogSysError(_("can't open file '%s'"), fileName);
return false;
}
- Attach(fd);
+ Attach(fildes);
return true;
}
// read/write
// ----------------------------------------------------------------------------
+bool wxFile::ReadAll(wxString *str, const wxMBConv& conv)
+{
+ wxCHECK_MSG( str, false, wxS("Output string must be non-NULL") );
+
+ ssize_t length = Length();
+ wxCHECK_MSG( (wxFileOffset)length == Length(), false, wxT("huge file not supported") );
+
+ wxCharBuffer buf(length);
+ char* p = buf.data();
+ for ( ;; )
+ {
+ static const ssize_t READSIZE = 4096;
+
+ ssize_t nread = Read(p, length > READSIZE ? READSIZE : length);
+ if ( nread == wxInvalidOffset )
+ return false;
+
+ p += nread;
+ if ( length <= nread )
+ break;
+
+ length -= nread;
+ }
+
+ *p = 0;
+
+ wxString strTmp(buf, conv);
+ str->swap(strTmp);
+
+ return true;
+}
+
// read
ssize_t wxFile::Read(void *pBuf, size_t nCount)
{
wxFileOffset iRc;
-#if defined(__DOS__) || defined(__UNIX__) || defined(__GNUWIN32__) || defined( __MWERKS__ )
+#if defined(__DOS__) || defined(__UNIX__) || defined(__GNUWIN32__)
// @@ this doesn't work, of course, on unseekable file descriptors
wxFileOffset ofsCur = Tell(),
ofsMax = Length();
{
wxLogSysError(_("can't determine if the end of file is reached on descriptor %d"), m_fd);
}
- else if ( iRc != 1 )
- {
- wxFAIL_MSG(wxT("invalid eof() return value."));
- }
return true;
}